如何在数据库中捕获项目的Junit测试结果

时间:2016-06-06 12:12:03

标签: jenkins junit testng jenkins-plugins

我们有很多独立模块(比方说X),所有X模块都有

  1. Junit测试用例
  2. TestNG的
  3. 只要开发人员使用Jenkins构建模块,测试用例就会执行。我正在构建一个UI仪表板来显示每个模块的测试用例结果。在此仪表板中,我将展示许多其他内容。因此,测试用例的结果只是一个列。

    问题:我需要一个工具/插件,通过它我可以将junit结果保存在数据库中,当时它是通过jenkins构建的。是否可能或者我是否需要编写自己的java程序?

2 个答案:

答案 0 :(得分:2)

据我所知,没有任何插件或类似内容。

您必须自己实施。如果是JUnit,您可以实现TestWatcher

@Rule
public TestWatcher watchman = new TestWatcher() {

    @Override
    protected void failed(Throwable e, Description description) {
        // Store result in DB
    }

    @Override
    protected void succeeded(Description description) {
        // Store result in DB
    }
};

https://garygregory.wordpress.com/2015/09/14/the-art-of-test-driven-development-logging-junit-test-results/

不想使用@Rule

如果您不想更改每项测试,则应该查看RunListener

testStarted(Description description)testFinished(Description description)是要实施的方法。

使用maven,您可以使用surefire插件,但it have to be 2.7 or newer

答案 1 :(得分:1)

您可以通过实施org.testng.IReporter来实现这一目标。

IReporter界面只有一种方法:

public void generateReport(List<ISuite> suites, String outputDirectory)

当所有套件都已运行时,TestNG将调用此方法。 另一个替代方案是实现接口ITestListener侦听器或扩展TestListenerAdapter

public class MyTestListener extends TestListenerAdapter {

  @Override
  public void onTestFailure(ITestResult tr) {
    //do the needful
  }

  @Override
  public void onTestSkipped(ITestResult tr) {
    //do the needful
  }

  @Override
  public void onTestSuccess(ITestResult tr) {
    //do the needful
  }

您可以参考TestNG documentation了解更多详情。