0

目前对于我正在使用的测试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 {
}

有没有类似SuiteExecutionListenerTestExecutionListener套房)的东西?

基本上我需要非静态@BeforeClass@AfterClass套件

或者

在 ExecutionListener 中,我需要找出已启动的类:案例或套件。为此,我可以:

  • 分析StackTrace并获取调用类
  • 使用Reflection.getCallerClass(int i)(已弃用)
  • 将调用者类传递给ExecutionManager(顺便说一句,我该怎么做?是否可以像在 Android 中一样放入Object?)TestContextBundle

但我真的不喜欢这些解决方案。SuiteExecutionListener更可取

谢谢

4

1 回答 1

1

SuiteExecutionListener不,不幸的是,在Spring TestContext Framework (TCF)中没有 a 这样的东西。

TCF 没有在套件级别与 JUnit 4 集成。

如果你想在 中存储一些东西TestContext,那不是问题。TestContext实现org.springframework.core.AttributeAccessor,因此您可以将属性存储在TestContext. 但是请注意,给定的生命周期与TestContext测试类相关联。

于 2016-06-23T15:46:45.913 回答