BeforeClass(Junit 4)和BeforeEach(Junit5)之间的区别

这两个注释都用来表示在当前测试类的每个Test方法之前应该执行带注释的方法。BeforeClass(Junit 4)和BeforeEach(Junit5)之间的区别

那么我们为什么要将注释从更改为@BeforeClass - Junit 4至@BeforeEach Junit 5?

还有什么额外的,已添加在junit 5,我失踪了?

其他注释的类似情况。

回答:

添加的主要功能是对Test Instance Lifecycle进行更细粒度的控制,例如通过@TestInstance注释。我认为这是更改旧的@Before@BeforeClass注释名称的原因之一。

旧(JUnit4)@Before和新(JUnit5)@BeforeEach是在它们被执行类似重新之前每@Test方法在测试类。所以如果你的班级有10种测试方法,@BeforeEach方法会执行10次。

老(JUnit4)@BeforeClass和新(JUnit5)@BeforeAll很相似,它们都只是执行一次,在任何类中的测试。所以即使你的班级有10次测试,@BeforeAll方法也只执行一次。

@BeforeClass重命名为@BeforeEach的问题中提出的建议因此是不正确

有关更多信息,另请参阅this question关于@Before,@BeforeClass,@BeforeEach和@BeforeAll之间的区别。

回答:

有一些相关的变化需要先用@TestInstance(Lifecycle.PER_CLASS)对测试类进行注释。这将为每个测试类而不是每个方法创建一个新的测试实例。

因此,您可以将@BeforeAll@AfterAll用于非静态方法以及接口默认方法。它还允许您在@Nested测试类中使用@BeforeAll@AfterAll

如果您使用Lifecycle.PER_CLASS您必须记住,如果您的测试依赖于存储在实例变量中的状态,则您可能必须重置@BeforeEach@AfterEach中的状态。

以上是 BeforeClass(Junit 4)和BeforeEach(Junit5)之间的区别 的全部内容, 来源链接: utcz.com/qa/265359.html

回到顶部