【发布时间】:2016-10-25 10:32:45
【问题描述】:
目前我正在使用TestExecutionListener 进行测试,效果非常好
public class ExecutionManager extends AbstractTestExecutionListener {
@Override
public void beforeTestClass(TestContext testContext) throws Exception {
System.out.println("beforeClass");
}
@Override
public void afterTestClass(TestContext testContext) throws Exception {
System.out.println("afterClass");
}
}
测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners(ExecutionManager.class)
public final class TC_001 {
@Test
public void test() {
System.out.println("Test_001");
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners(ExecutionManager.class)
public final class TC_002 {
@Test
public void test() {
System.out.println("Test_002");
}
}
当我在测试套件中包含这些测试时,会为每个测试类执行beforeTestClass(TestContext testContext) 和afterTestClass(TestContext testContext) 方法,这很合乎逻辑:
@RunWith(Suite.class)
@Suite.SuiteClasses({
TC_001.class,
TC_002.class
})
public final class TS_001 {
}
有没有类似SuiteExecutionListener(套房为TestExecutionListener)之类的东西?
基本上我需要非静态 @BeforeClass 和 @AfterClass 用于套件
或
在 ExecutionListener 中,我需要找出已启动的类:案例或套件。为此,我可以:
- 分析
StackTrace并获取调用类 - 使用
Reflection.getCallerClass(int i)(已弃用) - 将调用者类传递给
ExecutionManager(顺便问一下,我该怎么做?是否可以像在AndroidBundle中一样将Object放入TestContext?)
但我不太喜欢这些解决方案。 SuiteExecutionListener 更可取
谢谢
【问题讨论】:
标签: java spring junit testcontext