2

我通常用 ruby​​ 编写代码,并使用 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">

使用 formatter="plain" 会使屏幕充满过多的冗余信息。我不需要将每一个通道都列为一行文本——理想的只有一个点。

有谁知道是否编写了一个自定义格式化程序来产生类似于我想要的格式的东西?

我使用的任何工具都需要在命令行上运行,所以花哨的 GUI 工具不是一个选项。

4

1 回答 1

1

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

这里有一些很好的说明可以帮助您入门: http ://shaman-sir.wikidot.com/one-liner-output-formatter

基本上,您需要更改 addError 以记录有错误的测试。然后将 endTest() 更改为输出一个 . 而不是那里的所有信息,除非测试在失败或错误集中。

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

于 2013-01-06T21:08:36.690 回答