JUnit5 @ RunWith

1. Introduktion

I den här snabba artikeln kommer vi att täcka användningen av @RunWith- anteckningen i JUnit 5-ramverket.

I JUnit 5, den @RunWith har anteckning ersatts av mer kraftfulla @ExtendWith anteckning .

Emellertid kan @RunWith- anteckningen fortfarande användas i JUnit5 för bakåtkompatibilitetens skull.

2. Köra tester med en JUnit4-baserad löpare

Vi kan köra JUnit5-tester med andra äldre JUnit-miljöer med @RunWith- anteckningen.

Låt oss se ett exempel på att köra dessa tester i en Eclipse-version som endast stöder JUnit4.

Låt oss först skapa den klass vi ska testa:

public class Greetings { public static String sayHello() { return "Hello"; } }

Låt oss sedan skapa detta vanliga JUnit5-test:

public class GreetingsTest { @Test void whenCallingSayHello_thenReturnHello() { assertTrue("Hello".equals(Greetings.sayHello())); } }

Slutligen, låt oss lägga till den här anteckningen för att kunna köra testet:

@RunWith(JUnitPlatform.class) public class GreetingsTest { // ... }

Den JUnitPlatform klass är en JUnit4 baserad löpare som låt oss köra JUnit4 tester på JUnit Platform.

Låt oss komma ihåg att JUnit4 inte stöder alla funktioner i den nya JUnit-plattformen, så den här löparen har en begränsad funktionalitet.

Om vi ​​kontrollerar resultatet av testet i Eclipse kan vi se att en JUnit4-löpare användes:

3. Köra tester i en JUnit5-miljö

Låt oss nu köra samma test i en Eclipse-version som stöder JUnit5. I det här fallet behöver vi inte @RunWith- anteckningen längre och vi kan skriva testet utan löpare:

public class GreetingsTest { @Test void whenCallingSayHello_thenReturnHello() { assertTrue("Hello".equals(Greetings.sayHello())); } }

Testresultatet visar att vi nu använder JUnit5-löparen:

4. Migrera från en JUnit4-baserad löpare

Låt oss nu migrera ett test som använder en JUnit4-baserad löpare till JUnit5.

Vi ska använda ett vårtest som ett exempel:

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SpringTestConfiguration.class }) public class GreetingsSpringTest { // ... }

Om vi ​​vill migrera detta test till JUnit5 måste vi ersätta @RunWith- anteckningen med den nya @ExtendWith :

@ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { SpringTestConfiguration.class }) public class GreetingsSpringTest { // ... }

Den SpringExtension klass tillhandahålls av Spring 5 och integrerar Spring TestContext Framework in JUnit 5. @ExtendWith annotering accepterar någon klass som implementerar Extension gränssnittet.

5. Sammanfattning

I den här korta artikeln behandlade vi användningen av JUnit 4: s @RunWith- kommentar i JUnit5-ramverket.

Den fullständiga källkoden för exemplen finns tillgänglig på GitHub.