2013-01-04 87 views
2

我通常使用ruby代码,并使用rspec进行单元测试。Junit。有没有办法让输出格式化为rspec输出?

现在我必须在java中做一些工作,所以我使用JUnit。多个测试套件的输出如下所示;

test: 
    [junit] Running com.whatever.MapperTest 
    [junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.542 sec 
    [junit] Running com.whatever.ReducerTest 
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.391 sec 
    [junit] Running com.whatever.DenormalizerTest 
    [junit] Tests run: 8, Failures: 0, Errors: 0, Time elapsed: 0.046 sec 
    [junit] Running com.whatever.EventTest 
    [junit] Tests run: 31, Failures: 0, Errors: 0, Time elapsed: 0.081 sec 

BUILD SUCCESSFUL 
Total time: 5 seconds 

这是相当密集的文本,并且使它有点难以看到故障和错误。

使用RSpec,我得到这样的输出;

............F........F........E....... 

其中'。'代表通过测试,'F'是失败,'E'是错误。在这个输出下面是所有失败/错误的细节。

我发现这种格式更容易查看 - 故障和错误以某种方式跳跃出来,当从JUnit的正常汇总输出中查看运行/失败/错误的计数时,失败和错误跳跃出来。

我已经通过build.xml文件的junit任务中的几个选项,其中包括;

<formatter type="plain" usefile="false" /> 

<junit printsummary="true"> 

使用格式化= “普通” 了太多的冗余信息填满屏幕。我不需要将每一个通行证列为一行文本 - 只需要一个点是理想的。

有谁知道如果自定义格式化程序已被写入,产生类似于我想要的格式?

无论我使用哪种工具都需要在命令行上工作,花哨的GUI工具不是一个选项。

回答

1

您可以编写自己的格式化程序来解决问题。

这里有一些很好的说明,让你开始: ​​

基本上,你要改变addError保持与错误也测试纪录。然后改变endTest()来输出一个。而不是所有的信息,除非测试失败或错误Set。

ANT的API包含在二进制发行版中。请记住用新创建的格式化程序更新junit格式程序类名。

+0

感谢您的支持。我正在与格式化程序取得一些进展,但我遇到了一些障碍。我只能钩入单个测试套件的开始和结束(即包含一组测试的单个Java类)。所以,我正在吐出每套测试的一系列点。是否有任何方法可以在整个测试套件的开始和结束处获得,因此我可以在所有套件中为所有测试收集点并将它们输出为一个块? – digitalronin

+1

是的,它看起来并不是一个简单的解决方案。看起来它可能基于你正在使用的跑步者。您可以尝试将测试分组到一个套件中,然后运行该套件(查看套件之后是否触发endTest())。您可能可以使用RunListener。它有一个函数testRunFinished(),看起来它可以做你想做的事情。 – Joe

+0

谢谢,我会研究使用RunListener – digitalronin

相关问题