如何在数据库中抓取项目的Junit测试结果

How to capture the Junit Test Result of Project in Database

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

  1. Junit 测试用例
  2. TestNG

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

问题:我需要一个 tool/plugin,通过它我应该能够将 junit 结果保存在数据库中,这是通过 jenkins 构建的。是否可以或我是否需要编写自己的 java 程序?

您可以通过实施 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

据我所知没有任何插件或类似的。

你必须自己实施。对于 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.