JUnit断言失败是可怕的。可以做些什么?

时间:2014-08-25 18:14:21

标签: java unit-testing junit stack-trace spock

我从命令行运行我的单元测试,调用org.junit.runner.JUnitCore,我发现JUnit在我的脸上呕吐断言失败的方式有35行堆栈跟踪,其中只有1行与我相关很烦人。 / p>

我最近一直在玩Spock Framework,我觉得它的输出很漂亮。然而,它的文档似乎缺乏,整个框架似乎太神奇了,所以现在我更喜欢使用更简单,更知名的工具。

所以我的问题是,如果有一种方法可以让JUnit显示更多的点输出而没有不相关的堆栈帧,至少在断言错误的情况下。尽管如此,获取Spock的断言和简明异常报告的详细描述会很好。

我使用命令行,因此IDE不在桌面上,但我愿意将JUnit换成其他解决方案,只要它们简单,优雅并且有很好的支持。

2 个答案:

答案 0 :(得分:2)

我喜欢使用AssertJ(http://joel-costigliola.github.io/assertj/)。流畅的API是纯粹的天堂,日志消息实际上比JUnit更相关。但是,我认为您仍然会有堆栈跟踪,因此可能无法解决您的所有问题,但我认为值得使用。

答案 1 :(得分:1)

JUnit有一个runListener类,可以让你获得测试结果。这就是IDE和构建工具获得测试结果的方式。然后,您可以根据需要格式化测试结果。

public class MyTestListener extends RunListener {
    public void testFailure(Failure failure) {
         //this just prints the message instead of the whole stack
         //printing to STDOUT but you can print to file or whatever
         System.out.println(failure.getMessage());
    }
 }

然后在main方法中创建一个JUnitCore并添加监听器:

  public class RunMyTests{

   public void main(String... args) {
       JUnitCore core= new JUnitCore();
       core.addListener(new MyTestListener());
       core.run(MyTestSuite.class);
    }
 }