JUnit 5 @AfterEach 注解详解

IT 文章2年前 (2023)发布 小编
0 0 0

@AfterEach注解用于指示在当前类中的每个@Test、@RepeatedTest、@ParameterizedTest或@TestFactory方法之后执行带有@AfterEach注解的方法。

JUnit 5中的@AfterEach注解是JUnit 4中@After注解的替代品。

默认情况下,测试方法将与带有@AfterEach注解的方法在同一个线程中执行。

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

1.@AfterEach用法

使用@AfterEach注解一个方法,如下所示:

@AfterEach
public void cleanUpEach(){
	//Test cleanup code
}
@Test
void succeedingTest() {
    //test code and assertions
}

带有@AfterEach注解的方法不能是静态方法,否则将抛出运行时错误。

@AfterEach
public static void cleanUpEach(){
	//Test cleanup code
}
//Error
org.junit.platform.commons.JUnitException: @AfterEach method 'public static void com.howtodoinjava.junit5.examples.JUnit5AnnotationsExample.cleanUpEach()' must not be static.

在父类和子类中,@AfterEach方法是继承的,只要它们没有被隐藏或覆盖。

此外,父类(或接口)中的@AfterEach方法将在子类中的@AfterEach方法之后执行。

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

2.@AfterEach注解示例

让我们通过一个例子来说明。我们使用Calculator类并添加了一个add方法。

我们使用@RepeatedTest注解来运行测试5次。这将导致测试方法(add)运行5次。

对于每次测试方法的调用,带有@AfterEach注解的方法也应该调用一次。

public class AfterAnnotationsTest {

	@DisplayName("Add operation test")
	@RepeatedTest(5)
	void addNumber(TestInfo testInfo, RepetitionInfo repetitionInfo)
	{
		System.out.println("Running test -> " + repetitionInfo.getCurrentRepetition());
		Assertions.assertEquals(2, Calculator.add(1, 1), "1 + 1 should equal 2");
	}

	@AfterAll
	public static void cleanUp(){
		System.out.println("After All cleanUp() method called");
	}

	@AfterEach
	public void cleanUpEach(){
		System.out.println("After Each cleanUpEach() method called");
	}
}

其中Calculator类为:

public class Calculator
{
	public int add(int a, int b) {
		return a + b;
	}
}

输出:

Running test -> 1
After Each cleanUpEach() method called
Running test -> 2
After Each cleanUpEach() method called
Running test -> 3
After Each cleanUpEach() method called
Running test -> 4
After Each cleanUpEach() method called
Running test -> 5
After Each cleanUpEach() method called
After All cleanUp() method called

很明显,带有@AfterEach注解的cleanUpEach()方法每次测试方法调用时都会调用一次。

ad

免费在线工具导航

优网导航旗下整合全网优质免费、免注册的在线工具导航大全

© 版权声明

相关文章

暂无评论

暂无评论...