首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从命令行生成JUnit报告

从命令行生成JUnit报告
EN

Stack Overflow用户
提问于 2012-09-16 08:56:39
回答 1查看 14.8K关注 0票数 18

我有一个云系统的测试设置,它使用python的混合程序级控制和junit进行内部状态检查。本质上,我将几个VM作为云提供给服务器,然后是一个junit VM,它是云的成员,但驱动测试和检查内部状态。我们现有的云管理工具是由python驱动的,我想对此进行维护。

我有一个可以运行JUnit命令行的工作设置

代码语言:javascript
复制
java -ea -cp <classpath> org.junit.runner.JUnitCore <tests>

但这不会生成报表文件。我知道ant能够生成xml报告,但是我不想让ant参与这个过程(我已经有了足够多的移动部件)。

是否有一种方法可以从命令行启动junit,从而生成报告?

理想情况下,我会让junit测试生成xml报告,python测试生成xml报告,然后将它们合并在一起供我们的CI系统使用。

更新:命令行执行必须支持、Linux和Mac。我们不允许运送外部蚂蚁,尽管包装内部蚂蚁可能是一种选择。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-20 15:23:33

JUnit库没有任何XML选项。要实现这样的目标,您需要编写自己的RunListener,它侦听输出,在您的情况下将编写XML文件。

但是,要以正确的格式获取XML文件,以便CI系统能够读取它,我认为只使用ant (通过命令行使用build.xml (JUnitReport) )或使用java:如何以编程方式使用Apache ANT要容易得多。

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

  1. 从命令行中使用ant
  2. 以编程方式使用ant (使用Java )
  3. 直接与XMLJUnitResultFormatter一起使用JUnitCore
  4. 创建一个自定义RunListener,它生成正确的XML输出。

考虑到OP添加的限制,我们不能使用命令行中的ant,这样就消除了1。

在更仔细地研究了Ant JUnit任务之后,似乎不可能在JUnitCore (添加TestListener)中使用它,因为ant直接使用测试类的名称,所以不能使用桥类。来自XMLJUnitResultFormatter.java

代码语言:javascript
复制
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。

通过Java以编程方式调用Ant。我找不到这方面的任何最新文件。这似乎很难。

因此,最后,我将使用来自XMLJUnitResultFormatter的代码作为基础来执行4,这是一个定制的XMLJUnitResultFormatter。然后,我会把它发表在github.com上,这样这个问题就能得到正确的回答:-)

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12445582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档