目前我正在使用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中,我需要找出已启动的类:case或suite。为此,我可以:
StackTrace
并获得调用类Reflection.getCallerClass(int i)
(已弃用)ExecutionManager
(顺便说一句,我怎么能这样做?是否可以像Object
一样将TestContext
加入Bundle
?)< / LI>
但我并不喜欢这些解决方案。 SuiteExecutionListener
更为可取
谢谢
答案 0 :(得分:1)
不,遗憾的是, Spring TestContext Framework (TCF)中没有SuiteExecutionListener
这样的东西。
TCF没有在套件级别与JUnit 4集成。
如果您想在TestContext
中存储某些内容,那不是问题。 TestContext
实施org.springframework.core.AttributeAccessor
,因此您可以将属性存储在TestContext
中。但请注意,给定TestContext
的生命周期与测试类绑定。