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