测试异常时的单元测试最佳实践

Ira*_*ana 1 java android unit-testing junit4

因此,我一直在对 Android 应用程序进行单元测试,虽然在某些情况下我会使用失败场景进行测试,但我并没有按照这个答案建议的方式来测试它们(在 JUnit 测试中尝试 catch)。

我按照下面代码中显示的方式对其进行测试。答案是建议您应该在测试方法签名上添加“抛出异常”,因为如果它实际上抛出了您不期望的异常,那么它将导致测试失败。然而,我尝试了使用和不使用那段代码,但它都以同样的方式失败。上面提供的答案也使用我没有使用过的“规则”来进行这种测试,因为我需要的一切都在我的 try catch 块中,并且实例化是在 @Before 方法内完成的。

@Test
public void testMethod() {
   try{
   //code that will throw exception
   fail("Exception was not thrown");
   } catch (/* types of exceptions */) {
   //my asserts
   }
}
Run Code Online (Sandbox Code Playgroud)

我所追求的是哪种方法被认为是“最佳实践”以及其背后的原因。

gur*_*oso 6

expected注释的属性用于@Test定义测试用例,检查是否引发特定异常。或者,还有用于@Rules更具体控制的注释和有点不推荐使用的“try-catch”习惯用法。有关示例,请参阅junit wiki

@Test(expected = IllegalArgumentException.class)
Run Code Online (Sandbox Code Playgroud)