我有一个云系统的测试设置,它使用python的混合程序级控制和junit进行内部状态检查。本质上,我将几个VM作为云提供给服务器,然后是一个junit VM,它是云的成员,但驱动测试和检查内部状态。我们现有的云管理工具是由python驱动的,我想对此进行维护。
我有一个可以运行JUnit命令行的工作设置
java -ea -cp <classpath> org.junit.runner.JUnitCore <tests>但这不会生成报表文件。我知道ant能够生成xml报告,但是我不想让ant参与这个过程(我已经有了足够多的移动部件)。
是否有一种方法可以从命令行启动junit,从而生成报告?
理想情况下,我会让junit测试生成xml报告,python测试生成xml报告,然后将它们合并在一起供我们的CI系统使用。
更新:命令行执行必须支持、Linux和Mac。我们不允许运送外部蚂蚁,尽管包装内部蚂蚁可能是一种选择。
发布于 2012-09-20 15:23:33
JUnit库没有任何XML选项。要实现这样的目标,您需要编写自己的RunListener,它侦听输出,在您的情况下将编写XML文件。
但是,要以正确的格式获取XML文件,以便CI系统能够读取它,我认为只使用ant (通过命令行使用build.xml (JUnitReport) )或使用java:如何以编程方式使用Apache ANT要容易得多。
编辑:最初,我们有四个选项:
考虑到OP添加的限制,我们不能使用命令行中的ant,这样就消除了1。
在更仔细地研究了Ant JUnit任务之后,似乎不可能在JUnitCore (添加TestListener)中使用它,因为ant直接使用测试类的名称,所以不能使用桥类。来自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。
通过Java以编程方式调用Ant。我找不到这方面的任何最新文件。这似乎很难。
因此,最后,我将使用来自XMLJUnitResultFormatter的代码作为基础来执行4,这是一个定制的XMLJUnitResultFormatter。然后,我会把它发表在github.com上,这样这个问题就能得到正确的回答:-)
https://stackoverflow.com/questions/12445582
复制相似问题