我有一些常见的设置代码,我已经分解为标记为 @Before
的方法。但是,没有必要为每个测试运行所有这些代码。有没有办法标记它,以便 @Before
方法仅在某些测试之前运行?
原文由 Nick Heiner 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一些常见的设置代码,我已经分解为标记为 @Before
的方法。但是,没有必要为每个测试运行所有这些代码。有没有办法标记它,以便 @Before
方法仅在某些测试之前运行?
原文由 Nick Heiner 发布,翻译遵循 CC BY-SA 4.0 许可协议
完全同意将相关代码移至内部类的观点。所以在这里我做了什么。
这是代码:
class Testing {
@Test
public void testextmethod1() {
System.out.println("test ext method 1");
}
@Nested
class TestNest{
@BeforeEach
public void init() {
System.out.println("Init");
}
@Test
public void testmethod1() {
System.out.println("This is method 1");
}
@Test
public void testmethod2() {
System.out.println("This is method 2");
}
@Test
public void testmethod3() {
System.out.println("This is method 3");
}
}
@Test
public void testextmethod2() {
System.out.println("test ext method 2");
}
}
这是输出
test ext method 1
test ext method 2
Init
This is method 1
Init
This is method 2
Init
This is method 3
注意:我不确定 Junit4 是否支持此功能。我在 JUnit5 中这样做
原文由 Rohit Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
只需将不需要设置代码的测试移出到单独的测试类中即可。如果您有一些其他有助于保留的测试通用代码,请将其移出到辅助类中。