我有一个测试设置为使用蟒的用于过程控制水平和JUnit为内部状态检查的混合物的云系统。 从本质上讲,我带来了几个虚拟机到服务器的云,然后JUnit的VM这是云的成员,但驱动器的测试和检查内部状态。 我们现有的云管理的东西是蟒蛇驱动,我想保持这个。
我有一个工作设置,将通过运行JUnit的命令行
java -ea -cp <classpath> org.junit.runner.JUnitCore <tests>
但是这并不能产生一个报告文件。 我知道,蚂蚁是能够产生XML报告的,但我不希望在这个过程中(我有足够的运动部件的话)蚂蚁涉及。
有没有在命令行中,使得它产生的报告推出的JUnit的方法吗?
理想情况下,我会测试产生XML报告了JUnit,蟒蛇测试产生XML报告,然后它们合并起来为我们的CI系统消耗。
更新:在命令行执行必须支持Windows,Linux和Mac。 我们不允许出货外部蚂蚁,虽然包装内部的蚂蚁可能是一个选项。
JUnit的库没有任何XML输出选项。 为了实现这样的事情,你需要编写自己的RunListener ,其监听输出,并且将你的情况写XML文件。
但是,要在正确的格式的XML文件,以便它可以通过CI系统读取,我认为这将是更容易使用一个build.xml(只是用蚂蚁,无论是通过命令行JUnitReport ),或使用Java API的: 我如何使用Apache Ant的编程 。
编辑:最初,我们有四个选项:
- 在命令行中使用Ant
- 使用Ant编程方式(使用Java API)
- 直接与JUnitCore使用XMLJUnitResultFormatter
- 创建产生正确的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,所以这个问题可以正确回答:-)