我可以使 JUnit 更加冗长吗?

2022-09-01 18:52:13

每当断言语句成功时,我都希望它大喊一遍,或者至少让它显示遇到的成功断言语句的数量。

我使用的是JUnit4。

有什么建议吗?


答案 1

如果你想看到每个成功断言的一些输出,另一个不需要外部依赖关系或源代码的简单方法是定义你自己的 Assert 类,该类将所有方法委托给标准 JUnit Assert 类,以及记录成功的断言(失败的断言将像往常一样由 JUnit 类报告)。

然后,从“org.junit.Assert” =>“com.myco.test.Assert”对测试类运行全局搜索和替换,这应该可以修复所有常规和静态导入语句。

然后,您还可以轻松地将方法迁移到“越安静越好”阵营,并将包装器类更改为仅报告每个测试或每个类通过的断言总数,依此类推。


答案 2

添加一些信息,当我希望JUnit更加冗长并偶然发现这个问题时,这些信息对我很有帮助。也许它将来会帮助其他测试人员。

如果您从 Ant 运行 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

当我的测试超时时,这对我来说很有用,我不确定哪些测试实际上花了太长时间,哪些测试被取消了,因为它们在时间结束时不幸运行。


推荐