如果代码中有任何异常,如何使Junit测试用例失败?

Ris*_*ora 6 java junit junit4

我写了一个Junit测试来测试我的代码.当我的代码中出现任何异常时,我希望我的Junit测试用例失败.我尝试使用assert语句,但即使我的代码中出现异常,我的Junit测试用例也正在通过.请有人能告诉我如何实现这一目标吗?谢谢.

小智 21

我强烈建议您必须仅测试您的功能.如果抛出异常,测试将自动失败.如果没有抛出异常,您的测试将全部变为绿色.

但是,如果您仍然希望编写在异常情况下应该失败的测试代码,请执行以下操作: -

@Test
public void foo(){
   try{
      //execute code that you expect not to throw Exceptions.
   }
   catch(Exception e){
      fail("Should not have thrown any exception");
   }
}
Run Code Online (Sandbox Code Playgroud)


Ser*_*hyr 6

实际上,当抛出代码中的异常时,您的测试应该失败.当然,如果您捕获此异常并且不进一步抛出它(或任何其他异常),测试将不会知道它.在这种情况下,您需要检查方法执行的结果.示例测试:

@Test
public void test(){
  testClass.test();
}
Run Code Online (Sandbox Code Playgroud)

测试失败的方法:

public void test(){
  throw new RuntimeException();
}
Run Code Online (Sandbox Code Playgroud)

不会使测试失败的方法

public void test(){
  try{
    throw new RuntimeException();
  } catch(Exception e){
    //log
  }
}
Run Code Online (Sandbox Code Playgroud)


kpi*_*pie 0

您可以断言全局变量“excepted”= null 或类似的变量,并将其初始化为等于 catch 块中的某些信息字符串。