1.概述
在这个简短的教程中,我们要实现与非静态方法@BeforeAll
和@AfterAll
在注释中提供Junit5
。
2.非静态方法中的@BeforeAll
和@AfterAll
虽然单元测试,我们可能偶尔需要使用@BeforeAll
和@AfterAll
在非静态设置和拆除方法-例如,在@ Nested
测试类或接口的默认方法。
让我们用@BeforeAll
和@AfterAll
方法创建一个非静态的测试类:
public class BeforeAndAfterAnnotationsUnitTest {
String input;
Long result;
@BeforeAll
public void setup() {
input = "77";
}
@AfterAll
public void teardown() {
input = null;
result = null;
}
@Test
public void whenConvertStringToLong_thenResultShouldBeLong() {
result = Long.valueOf(input);
Assertions.assertEquals(77l, result);
}
}
如果我们运行上面的代码,它将引发异常:
org.junit.platform.commons.JUnitException: ...
现在让我们看看如何避免这种情况。
3.@TestInstance
注释
我们将使用@TestInstance
批注配置测试的生命周期。如果我们不在测试类上声明它,则默认情况下PER_METHOD
.
因此,为了防止我们的测试类抛出JUnitException,
我们需要使用@TestInstance(TestInstance.
**Lifecycle.PER_CLASS)** .
让我们重做测试类并添加@TestInstance(TestInstance.
Lifecycle.PER_CLASS):
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class BeforeAndAfterAnnotationsUnitTest {
String input;
Long result;
@BeforeAll
public void setup() {
input = "77";
}
@AfterAll
public void teardown() {
input = null;
result = null;
}
@Test
public void whenConvertStringToLong_thenResultShouldBeLong() {
result = Long.valueOf(input);
Assertions.assertEquals(77l, result);
}
}
在这种情况下,我们的测试运行成功。
4。结论
在这篇简短的文章中,我们学习了如何在非静态方法中@BeforeAll
和@AfterAll
首先,我们从一个简单的非静态示例开始,以显示如果不包含@TestInstance
批注会发生什么。 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
注释了我们的测试,以防止抛出JUnitException 。
0 评论