java - 有没有类似 Spring TestExecutionListener for TestSuite 的东西?

标签 java spring junit testcontext

目前,我正在使用 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(顺便问一下,我该怎么做?是否可以将Object放入TestContext中,就像Android bundle ?)

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

谢谢

最佳答案

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

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

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

关于java - 有没有类似 Spring TestExecutionListener for TestSuite 的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37985717/

相关文章:

java - 在 Spring Boot MVC 应用程序中在 JPA 和 Mongo 之间切换

java - 从测试用例调用 Controller 时,使用自动连线组件测试 Controller 为空

Java对象锁等于或同步等于? (对哈希码也有效)

java - Kotlin 的 Java 项目中的高阶函数

spring - 使用 Spring Batch 的复杂 XML; StaxEventItemWriter ; Jaxb2编码器

spring - 如何在 JPA 中生成自定义 Id

java - 如何将 Python Script(py) 文件解析为 Java POJO?

java - 如何设置 Ant 'junit' 任务的工作目录?

java - 将 GUI 添加到现有的基于 Java 控制台的程序

java - 数据库函数引号内的 JDBI 绑定(bind)值