如何在抛出异常和执行没有异常的情况下使JUnit都传递?

ps1*_*138 0 java junit exception

我知道一个简单的方法是这样的:

try {  
     //perform something you expect no exceptions  
} catch (Exception e) {  
    Assume.assumeTrue(e.getErrorMessage().equals("Expected Exception");  
}
Run Code Online (Sandbox Code Playgroud)

有什么其他更优雅的方法可以让我的JUnit在抛出特定异常时传递,并且当Exception.thrown 完全没有抛出异常时?

ngi*_*lis 6

我认为单元测试应该有一个特定的结果,而不是可能的多个结果.

您始终可以模拟可能影响测试结果的外部依赖项.单元测试最佳实践之一是测试必须是"可重复的".

运行单元测试应该与其结果一致,也就是说,如果不在运行之间更改任何内容,它总是返回相同的结果.

许多开发人员也遵循的一个实践/规则是每次测试只有一个断言.

因此,这里最好的解决方案是尝试让您的测试"可重复".

希望这会有所帮助,欢呼

  • 实现这一目标的一种简单方法是进行两次测试,每次测试一次.这样可以强制状态保持一致. (2认同)
  • @ ps138如果您正确设置状态,则不是,基本示例:假设您要检查是否收到了一些数据.您将模拟数据,因为您只测试检查该测试中是否存在数据.在一个测试中,您创建了一个数据对象,因此您没有得到异常,在第二个测试中,您没有得到异常.不管你运行多少次都不会改变. (2认同)