Java 我可以编写一个没有任何断言的测试吗?

Java 我可以编写一个没有任何断言的测试吗?,java,unit-testing,junit,assert,Java,Unit Testing,Junit,Assert,我想知道在没有任何“断言”的情况下编写测试是否“可以”。因此,只有在发生异常/错误时,测试才会失败 例如:像一个测试,它有一个简单的select查询,以确保数据库配置是正确的。因此,当我更改一些数据库配置时,我会重新运行这个测试,并检查配置是否正确 谢谢 确保单元测试运行时不会遇到异常是完全有效的 按照他的建议,一定要清楚准确地记录测试的内容。测试是一个非常主观的讨论。有些人会说不,你应该总是有AAA语法。就我个人而言,我写的测试与你所说的非常相似,所以我想说,当然可以,如果它能帮助你构建一个更

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

例如:像一个测试,它有一个简单的select查询,以确保数据库配置是正确的。因此,当我更改一些数据库配置时,我会重新运行这个测试,并检查配置是否正确


谢谢

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


按照他的建议,一定要清楚准确地记录测试的内容。

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

例如,在NUnt中,我认为[ExpTestExpExtudio Type(xxxx)]在逻辑上等同于断言。


此外,在某些测试中,您可能不会断言任何内容,而是希望通过mock和expected获得特定的执行顺序。

正如@Kyle所指出的,您的测试用例是有效的。事实上,反过来也是有效的:当您编写一个测试用例来确认使用特定参数的某个调用会导致异常时。

确定您可以这样做。
如果预期结果是一个验证,那么编写一个没有断言的测试也是非常好的。我知道testng将允许您指定应该抛出的异常,如果没有抛出预期的异常,测试将失败

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

  • 测试一个无异常结束的案例。在本例中,如果可以的话,最好使用特定类型的异常对测试进行修饰,如[ExpectedException(MyException)]

  • 测试一个特性就在那里。即使测试不可能生成异常,如果有人决定删除该功能,您也可能希望使该测试失败。如果测试使用某个方法,并且该方法被删除,那么测试将无法构建


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

只要确保记录测试实际测试的内容就可以了谢谢@马特:是的,我会的!:)(我给出的示例有力地要求)为了“确保”您必须断言“x”具有“确定-->此值或状态或任何内容”,无断言测试有意义:从0到none@KyleRozendo:JUnit可以(通常是)用于多个单元测试。您在这个问题中添加了一些“单元测试”标签,但我真的不确定验证某些“db配置”的测试(OP在我更改某些db配置时这样写,我重新运行此测试并检查配置是否正确)是否真的是一个单元测试。OP没有提到单元测试,我也不会把这种测试称为“单元测试”。@Web-“单元测试是一种软件验证和确认方法,程序员在其中测试单个源代码单元是否适合使用。”我不同意:)这种测试有时被称为“冒烟测试”。如果有烟冒出来,那就是测试失败了。谢谢!对我记得看到过一些JMock教程,没有断言,只有期望。我们将对此进行探索!