例如,我们有两个类: BaseTest
以及 Test
, Test
延伸 BaseTest
. BaseTest.class
包含2个方法 @BeforeEach
注解。
@BeforeEach
void setUp1() {}
@BeforeEach
void setUp2() {}
``` `Test.class` 包含2个方法 `@Test` 注解。
@Test
void test1() {}
@Test
void test2() {}
我想把 `@BeforeEach` 方法 `@Test` 方法,所以 `setup1()` 只会在 `test1()` 以及 `setup2()` -只在之前 `test2()` .
如果能提供一个使用junit扩展完成此任务的代码示例,我将不胜感激。
4条答案
按热度按时间dsf9zpds1#
最重要的一句话
@BeforeEach
每个都是。这些方法在每次测试之前运行,并不适合您描述的用例。如果您需要如此紧密的耦合,我建议您远离junit注解,直接调用setup方法:mznpcxlj2#
您不需要将测试设置代码只放在
@BeforeEach
带注解的方法。你可以把它放在@Test
方法或(也许更好)在从@Test
方法。owfi6suc3#
在JUnit5中,您有一个新特性叫做嵌套测试,它允许您有嵌套类,每个类都有自己的前后。这需要对类层次结构进行一点更改
BaseTest.class
以及Test.class
但就像一个魔咒:@嵌套表示带注解的类是非静态嵌套测试类@beforeall和@afterall方法不能直接在@nested测试类中使用,除非使用“每类”测试示例生命周期。这样的注解不会被继承。
mhd8tkvw4#
像这样是不可能的。您还可以考虑其他一些选择:
将setup2()和test2()放在另一个测试类中。因为test1和test2不共享设置(“fixture”),所以它们应该在不同的类中。
删除@beforeach注解,并在实际测试方法的开头显式调用setup方法。