是否有类似 Spring TestSuite 的 TestExecutionListener 之类的东西?
Is there anything like Spring TestExecutionListener for TestSuite?
目前我正在使用 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");
}
}
测试classes:
@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)
方法 class,这是合乎逻辑的:
@RunWith(Suite.class)
@Suite.SuiteClasses({
TC_001.class,
TC_002.class
})
public final class TS_001 {
}
是否有类似 SuiteExecutionListener
(TestExecutionListener
套房)的东西?
基本上我需要非静态 @BeforeClass
和 @AfterClass
套件
或
在 ExecutionListener 中,我需要找出 class 已启动的内容:案例或套件。为此,我可以:
- 分析
StackTrace
并开始调用 class
- 使用
Reflection.getCallerClass(int i)
(已弃用)
- 将调用者 class 传递给
ExecutionManager
(顺便问一下,我该怎么做?是否可以像 [=56 中那样将 Object
放入 TestContext
=] Bundle
?)
但我不太喜欢这些解决方案。 SuiteExecutionListener
更可取
谢谢
不,不幸的是 Spring TestContext Framework (TCF) 中没有 SuiteExecutionListener
这样的东西。
TCF 未在套件级别与 JUnit 4 集成。
如果您想在 TestContext
中存储一些内容,那不是问题。 TestContext
实现 org.springframework.core.AttributeAccessor
,因此您可以在 TestContext
中存储 属性 。但是请注意,给定 TestContext
的生命周期与测试 class.
相关联
目前我正在使用 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");
}
}
测试classes:
@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)
方法 class,这是合乎逻辑的:
@RunWith(Suite.class)
@Suite.SuiteClasses({
TC_001.class,
TC_002.class
})
public final class TS_001 {
}
是否有类似 SuiteExecutionListener
(TestExecutionListener
套房)的东西?
基本上我需要非静态 @BeforeClass
和 @AfterClass
套件
或
在 ExecutionListener 中,我需要找出 class 已启动的内容:案例或套件。为此,我可以:
- 分析
StackTrace
并开始调用 class - 使用
Reflection.getCallerClass(int i)
(已弃用) - 将调用者 class 传递给
ExecutionManager
(顺便问一下,我该怎么做?是否可以像 [=56 中那样将Object
放入TestContext
=]Bundle
?)
但我不太喜欢这些解决方案。 SuiteExecutionListener
更可取
谢谢
不,不幸的是 Spring TestContext Framework (TCF) 中没有 SuiteExecutionListener
这样的东西。
TCF 未在套件级别与 JUnit 4 集成。
如果您想在 TestContext
中存储一些内容,那不是问题。 TestContext
实现 org.springframework.core.AttributeAccessor
,因此您可以在 TestContext
中存储 属性 。但是请注意,给定 TestContext
的生命周期与测试 class.