拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何使用JUnit5中的@BeforeAll和@AfterAll

如何使用JUnit5中的@BeforeAll和@AfterAll

白鹭 - 2021-11-24 405 0 0

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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *