我从命令行运行我的单元测试,调用org.junit.runner.JUnitCore
,我发现JUnit在我的脸上呕吐断言失败的方式有35行堆栈跟踪,其中只有1行与我相关很烦人。 / p>
我最近一直在玩Spock Framework,我觉得它的输出很漂亮。然而,它的文档似乎缺乏,整个框架似乎太神奇了,所以现在我更喜欢使用更简单,更知名的工具。
所以我的问题是,如果有一种方法可以让JUnit显示更多的点输出而没有不相关的堆栈帧,至少在断言错误的情况下。尽管如此,获取Spock的断言和简明异常报告的详细描述会很好。
我使用命令行,因此IDE不在桌面上,但我愿意将JUnit换成其他解决方案,只要它们简单,优雅并且有很好的支持。
答案 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);
}
}