回答
如果你想看到每个成功断言的输出,另一个不需要外部依赖或源代码的简单方法就是定义你自己的Assert类,它将所有方法委托给标准的JUnit Assert类以及日志成功的断言(失败的断言将像往常一样由JUnit类报告)。
然后,您将从“org.junit.Assert”=>“com.myco.test.Assert”对您的测试类运行全局搜索和替换,这应该修复所有常规和静态导入语句。
你也很容易再你的方法迁移到更安静的就是更好阵营,改变包装类只报告每个测试或每类传入断言的总#等
JUnit的javadoc的不幸说,只有失败的断言被记录(http://junit.sourceforge.net/javadoc_40/index.html)
所以现在看来,这是不可能的
我敢肯定,你可以创建一个自定义的TestRunner是这样做的。我们在我们自制的单元测试框架(NUnit的一个克隆)中得到了类似的结果。
哦,等等 - 现在我再次读你的问题,如果你真的想要输出每个成功的断言,你将不得不深入探讨管道。 TestRunner只会为每个测试用例的开始/结束调用一次,所以它会计数通过并且失败测试,而不是断言。
这对我来说并不是什么大问题,因为我一般倾向于每个测试一个断言。
很难做到。所有的assert方法都是类Assert的静态成员,这意味着RunNotifier(计数成功和失败的测试)不可及。
如果您不想避免不恰当的破解:从JUnit获取源代码,在运行测试时将它们修补以将当前通知程序存储在Assert的静态字段中,以便静态方法可以将成功的断言报告给此通知程序。
你能考虑吗?
1)下载JUnit的源
2)修改类org.junit.Assert做你正在寻找
您可以使用AOP(与Spring还是AspectJ)上的所有断言定义切入点任何修改方法在junit.framework.Assert类中。使用spring可以在返回通知后实现自己的类(http://static.springframework.org/spring/docs/2.5.x/reference/aop.html#aop-advice-after-returning)仅在assert方法通过时才会调用它(否则会引发异常:junit.framework.AssertionFailedError )。在您自己的类中,您可以实现一个简单的计数器,在最后打印。
你在获得成功吗?通常情况下,唯一有趣的说法是那些失败的断言很感兴趣。
作为一个狂热的JUnit奉献自己,我尝试做的输出尽可能安静地进行测试,因为它在不通过任何事情的情况下提高了信噪比。最好的测试运行是所有事情都经过并且没有从标准输出中窥视的一个测试。
您可以随时在单元测试中工作,直到成功并运行“grep Assert test.java | wc -l“。:-)
我不我认为,JUnit的目标是计算匹配的断言或打印出更详细的信息。 如果测试是原子性的,那么您会在那里获得大部分信息。所以我会检查我的测试。
你也可以在JUnit中建立一个LogFile。这是可能的,但它会降低测试执行性能...
添加一些信息,当我想让JUnit在这个问题上变得更加冗长和迷迷糊糊时,对我会有所帮助。也许它将在未来帮助其他测试人员。
如果从蚂蚁运行JUnit,并希望看到什么样试验进行的同时,您可以添加以下到您的任务:
<junit showoutput="true" printsummary="on" enabletestlistenerevents="true" fork="@{fork}" forkmode="once" haltonfailure="no" timeout="1800000">
注意showoutput,printsummary和enabletestlistenerevents是什么帮助,不是其他任务属性。如果设置了这些,你会得到输出如下:
Running com.foo.bar.MyTest
junit.framework.TestListener: tests to run: 2
junit.framework.TestListener: startTest(myTestOne)
junit.framework.TestListener: endTest(myTestOne)
junit.framework.TestListener: startTest(myTestTwo)
junit.framework.TestListener: endTest(myTestTwo)
Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.495 sec
这是对我有用的,当我测试超时,我不知道哪个测试实际花费的时间太长,并且测试得到,因为取消时间到了,他们不幸运行。
- 1. Gprof可以更详细吗?
- 2. 我可以为app_fax获取更详细的ami事件吗?
- 3. JUnit详细输出
- 4. 我可以在ListView的详细模式下显示链接吗?
- 5. 我可以在ListView的详细模式下显示链接吗?
- 6. 有人可以向我详细解释'this'的用法吗?
- 7. 我可以让这个jQuery更短吗?
- 8. 我可以让maven-assembly-plugin更快吗?
- 9. 我可以在Netbeans 7.3中获得“更好”的详细输出吗?
- 10. 蚂蚁junit任务不报告详细
- 11. 如何让我的代码更少详细
- 12. 我可以更改MVC使用的文件的名称,以在我的网格中显示详细数据吗?
- 13. JUnit可以模拟OutOfMemoryErrors吗?
- 14. 我可以混合使用JUnit 3和JUnit 4吗?
- 15. 如何为Jmeter创建更详细的结果消息Junit Sampler
- 16. CloudWatch可以提供服务器或elb的详细信息吗?
- 17. 有人可以详细解释Magentos索引功能吗?
- 18. 从PyMel调用MEL脚本时可以报告更详细的结果吗?
- 19. 我可以让div类可点击吗?
- 20. 详细视图SugarCRM可安装更改
- 21. 使vim更详细(使按键可见)
- 22. 我可以让我的UiApp拖动吗?
- 23. 我可以在PowerShell中获得详细的异常堆栈跟踪吗?
- 24. 什么是IBM Worklight?任何人都可以向我详细解释一下吗?
- 25. 我可以在manyToMany自动生成的模型中指定详细名称吗?
- 26. Facebook API:我可以获取有关用户位置的详细信息吗?
- 27. 任何人都可以向我详细解释这个正则表达式吗?
- 28. C#:我可以从CLR的未处理异常中获取详细信息吗?
- 29. 我可以从CGI级别访问TCP/IP数据包的详细信息吗?
- 30. 在TDD方法中,我们可以有详细设计文档吗?
你为什么要这样做?我总是试图遵循沉默的规则(http://www.catb.org/~esr/writings/taoup/html/ch01s06.html#id2878450),这就是为什么我要求 – 2008-10-07 21:08:40
这可能是一种有用的方法看看是否有人“调整”测试用例,通过消除不适当的断言来通过测试用例... – 2008-10-07 22:07:06