我可以在没有任何断言的情况下编写测试吗?

时间:2010-05-24 20:04:52

标签: java unit-testing junit assert

我想知道在没有任何“断言”的情况下编写测试是否“正常”。因此,只有在发生异常/错误时,测试才会失败。

例如:像具有简单选择查询的测试一样,以确保数据库配置正确。因此,当我更改某些db-configuration时,我会重新运行此测试并检查配置是否正确。 ?

谢谢!

6 个答案:

答案 0 :(得分:16)

确保单元测试运行时不会遇到异常是完全有效的。

根据Matt B的建议,请务必记录测试实际测试的内容,使其清晰准确。

答案 1 :(得分:4)

正如@Kyle所说,你的测试用例是有效的。事实上,相反的情况也是有效的:当您编写测试用例以确认具有特定参数的特定调用导致异常时。

答案 2 :(得分:3)

当然可以这样做。 在没有断言的情况下编写测试也是完美的,其中预期结果是一个例外。我知道testng会让你指定一个应该抛出的异常,如果没有抛出预期的异常,测试将会失败。

答案 3 :(得分:2)

测试是一个非常主观的讨论。有些人会说不,你应该总是有AAA语法。就个人而言,我已经编写了与你所说的非常相似的测试,所以我会说,确保继续 - 如果它可以帮助你构建一个更稳定的应用程序,那么为什么不呢。

例如在NUnit中,我认为[ExpectedException typeof(XXXX)]在逻辑上等同于Assert。

同样在某些测试中,您可能不会声明任何内容,只是期望通过Mocks和Expects执行特定的命令。

答案 4 :(得分:0)

编写一个没有任何断言的单元测试肯定是可以接受的。你可以这样做:

  • 测试以无异常结束的案例。在这种情况下,如果可以,最好使用特定类型的异常来修饰测试,如[ExpectedException(MyException)]。

  • 测试功能就在那里。即使测试不可能产生异常,如果有人决定删除该功能,您可能希望使此测试失败。如果测试使用方法并且方法被删除,则测试将无法构建。

答案 5 :(得分:0)

测试的目的是检查“X”是否具有“预期的东西”,以便检查“预期的东西”是否正确断言,期望或验证。这就是大多数框架以某种方式实现这些方法的原因