Mat*_*att 18 junit continuous-integration junit4
我有一个云系统的测试设置,它使用python的混合物进行过程级控制,使用junit进行内部状态检查.从本质上讲,我将几个虚拟机作为云提供给服务器,然后是一个junit虚拟机,它是云的一部分,但可以驱动测试并检查内部状态.我们现有的云管理内容是由python驱动的,我想保持这一点.
我有一个工作设置,将通过运行JUnit命令行
java -ea -cp <classpath> org.junit.runner.JUnitCore <tests>
Run Code Online (Sandbox Code Playgroud)
但这不会产生报告文件.我知道蚂蚁能够生成一个xml报告,但我不想让蚂蚁参与这个过程(我已经有足够的移动部件了).
有没有办法从命令行启动junit,以便生成报告?
理想情况下,我会让junit测试生成xml报告,python测试生成xml报告,然后将它们合并在一起供我们的CI系统使用.
更新:命令行执行必须支持Windows,Linux和Mac.虽然包装内部蚂蚁可能是一种选择,但我们不允许运送外部蚂蚁.
Mat*_*ell 18
JUnit库没有任何XML输出选项.要实现这一点,您需要编写自己的RunListener,它会监听输出,并在您的情况下编写XML文件.
但是,要以正确的格式获取XML文件以便CI系统可以读取它,我认为通过使用build.xml(JUnitReport)的命令行或使用ant来使用ant要容易得多. java api:我如何以编程方式使用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);
}
Run Code Online (Sandbox Code Playgroud)
这消除了3.
通过Java API以编程方式调用Ant.我找不到有关此的最新文档.这似乎很难.
所以,最后,我将使用XMLJUnitResultFormatter中的代码作为基础来执行4,一个自定义RunListener.然后,我会在github.com上发布它,所以这个问题可以正确回答:-)
归档时间: |
|
查看次数: |
11448 次 |
最近记录: |