生成JUnit的命令行报告(Generating JUnit reports from the co

2019-07-31 15:11发布

我有一个测试设置为使用蟒的用于过程控制水平和JUnit为内部状态检查的混合物的云系统。 从本质上讲,我带来了几个虚拟机到服务器的云,然后JUnit的VM这是云的成员,但驱动器的测试和检查内部状态。 我们现有的云管理的东西是蟒蛇驱动,我想保持这个。

我有一个工作设置,将通过运行JUnit的命令行

java -ea -cp <classpath> org.junit.runner.JUnitCore <tests>

但是这并不能产生一个报告文件。 我知道,蚂蚁是能够产生XML报告的,但我不希望在这个过程中(我有足够的运动部件的话)蚂蚁涉及。

有没有在命令行中,使得它产生的报告推出的JUnit的方法吗?

理想情况下,我会测试产生XML报告了JUnit,蟒蛇测试产生XML报告,然后它们合并起来为我们的CI系统消耗。

更新:在命令行执行必须支持Windows,Linux和Mac。 我们不允许出货外部蚂蚁,虽然包装内部的蚂蚁可能是一个选项。

Answer 1:

JUnit的库没有任何XML输出选项。 为了实现这样的事情,你需要编写自己的RunListener ,其监听输出,并且将你的情况写XML文件。

但是,要在正确的格式的XML文件,以便它可以通过CI系统读取,我认为这将是更容易使用一个build.xml(只是用蚂蚁,无论是通过命令行JUnitReport ),或使用Java API的: 我如何使用Apache Ant的编程 。

编辑:最初,我们有四个选项:

  1. 在命令行中使用Ant
  2. 使用Ant编程方式(使用Java API)
  3. 直接与JUnitCore使用XMLJUnitResultFormatter
  4. 创建产生正确的XML输出定制RunListener。

考虑到由OP添加的限制,我们不能使用ant命令行,从而消除1。

在蚂蚁junit任务更加紧密地看后,这似乎是不可能与JUnitCore使用(加入TestListener),因为蚂蚁直接使用测试类的名字,所以你不能做一个桥梁类。 从XMLJUnitResultFormatter.java

private void formatError(String type, Test test, Throwable t) {
    ...
    nested.setAttribute(ATTR_TYPE, t.getClass().getName());

    String strace = JUnitTestRunner.getFilteredTrace(t);
    Text trace = doc.createTextNode(strace);
    nested.appendChild(trace);
}

这消除3。

调用Ant编程,通过Java API。 我无法找到任何这最近的文档。 这似乎很难。

所以,最后,我会做4,自定义RunListener,利用XMLJUnitResultFormatter的代码为基础。 然后,我会发布在github.com,所以这个问题可以正确回答:-)



文章来源: Generating JUnit reports from the command line