【问题标题】:JUnit - Accessing TestResult from TestSuiteJUnit - 从 TestSuite 访问 TestResult
【发布时间】:2013-01-03 13:55:41
【问题描述】:

我的 TestSuite 在构建期间使用 ant 目标运行。
我想在我的套件中访问 TestResult 并在测试成功与否时执行一些操作。
有没有办法在 tear down 方法中检索对象?
谢谢

【问题讨论】:

  • 不确定为什么需要从测试代码本身访问它。但是,如果您只需要以某种方式更改结果,这可能会有所帮助:skill-guru.com/blog/2010/03/26/…。老实说,在测试本身中操纵结果听起来很可疑:)
  • 我根本不会操纵结果。我只是想阅读它们以通知其他一些构建操作来做一些事情。
  • 在这种情况下,您可以使用建议的方式,因为在这种情况下,您可以将测试与触发器分离(与其他方法相比,我认为这是一个优势)

标签: java unit-testing junit junit4 test-suite


【解决方案1】:

对于 jUnit3,我会尝试继承 Test 并覆盖 run 方法。这将使我能够访问TestResult 实例。像这样的:

public class MyTest extends Test {
  @Overwrite
  public void run(TestResult result) {
    super.run(result);
    doSomethingWithResults(result);
  }

  // ...
}

对于 jUnit4,我会考虑实现一个 TestRunner(基于标准运行器)。听起来很难,但实际上并非如此。子类化默认的,只需添加 @RunWith 注释即可使用您自己的跑步者(可以对结果做一些事情)

【讨论】:

  • 谢谢。我应该在套件中还是在测试类中更改 @RunWith
  • 还有一个问题,您有收集此类信息的经验吗?你知道我在哪里可以找到它吗?确实,实现跑步者并不难,但我找不到有关测试结果的信息......
  • 扩展默认的跑步者,即BlockJUnit4ClassRunner,然后覆盖[run](junit.sourceforge.net/javadoc/org/junit/runners/…。我想,你也必须写一个custum RunNotifier来包裹你的那个获取并允许拦截失败通知。对于您的问题:不,从未这样做过,但它看起来像是要走的路。
  • 谢谢!我最终扩展了RunListener,并将其添加到RunNotifier 我正在进入run。感谢您的帮助!
  • 酷 :) 每当我需要这样的东西时,我都会回复我的答案 :)
猜你喜欢
  • 2012-03-05
  • 2018-03-19
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多