【问题标题】:JUnit - Listener for when ALL test classes have been executed?JUnit - 何时执行所有测试类的侦听器?
【发布时间】:2013-05-26 05:38:02
【问题描述】:

我一直在寻找一段时间,但我仍然无法找到一种方法来做我想做的事。

我在 Eclipse 中使用“作为 JUnit 测试运行”在整个项目中运行我的单元测试。

我实现了一个自定义的 RunListener,它在单例中记录一些测试结果信息(仅供参考,这并不意味着只记录测试结果,我知道我们可以为此导出 junit 报告。这是为了捕获附加信息都在测试方法自定义注解中)。

一旦执行了所有测试,我想将单例信息保存在磁盘上。 (关键字是 ALL :))

我知道我可以覆盖 testRunFinished(这就是我现在所做的), 但是每次执行单个类的所有测试时都会调用此方法(因此由测试类执行一次)。

是不是因为 Eclipse “运行方式”默认将每个类都视为一个套件?

虽然它有效,但将单例状态保持数千次并不是真正有效的。

另外,我想给持久化文件一个正确的名称(如二进制版本 + 日期),但我现在不能,因为我不知道所有测试何时执行,所以每次文件被持久化它会创建一个新文件(包含毫秒的日期),尽管测试还没有结束(因此单例数据不完整)

有什么想法吗?

谢谢!

【问题讨论】:

  • 我找到了解决方法。我可以创建一个 TestSuite 并创建一个 AfterClass,但这意味着我需要枚举数千个类,这很麻烦……我会寻找一种动态方式将所有测试类添加到套件中,但我想要一个更好的想法!

标签: java eclipse junit junit4


【解决方案1】:

最后,我创建了一个 TestSuite,带有一个 @AfterClass 静态方法,只在我的单例状态下持续一次。

这意味着我必须在套件中添加我所有的测试类。

幸运的是,感谢 JavaRocky,我用自定义注释动态地包含了我的所有测试类。

在此处查看答案:How do I Dynamically create a Test Suite in JUnit 4?

如果有人有更简单的方法来完成 @AfterAllTestRuns ... 请告诉我!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多