【问题标题】:Junit. Is there a way to get output formatted like rspec output?朱尼特。有没有办法让输出格式化为 rspec 输出?
【发布时间】:2012-12-19 05:06:11
【问题描述】:

我通常使用 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 工具。

【问题讨论】:

    标签: java junit tdd


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢。我在格式化程序方面取得了一些进展,但我遇到了障碍。我只能挂钩单个测试套件的开始和结束(即包含一组测试的单个 java 类)。所以,我在每组测试中吐出一行点。有什么方法可以获取整个组测试套件的开始和结束,这样我就可以收集所有套件中所有测试的点并将它们作为一个块输出?
    • 是的,看起来没有直接的解决方案。似乎它可能基于您正在使用的跑步者。您可以尝试将您的测试分组到一个套件中,然后运行它(查看 endTest() 是否在套件之后触发)。您也许可以使用 RunListener。它有一个函数testRunFinished(),看起来它可以做你想做的事。
    • 谢谢,我会考虑使用 RunListener
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 2013-08-03
    • 2021-08-31
    • 1970-01-01
    • 2016-10-20
    相关资源
    最近更新 更多