繁体   English   中英

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

[英]How to make a Junit test case fail if there is any exception in the code?

我编写了一个 Junit 测试来对我的代码进行单元测试。 当我的代码中出现任何异常时,我希望我的 Junit 测试用例失败。 我尝试使用 assert 语句,但即使我的代码出现异常,我的 Junit 测试用例也能通过。 请谁能告诉我如何实现这一目标? 谢谢。

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

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

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

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

@Test
public void test(){
  testClass.test();
}

测试失败的方法:

public void test(){
  throw new RuntimeException();
}

测试不会失败的方法

public void test(){
  try{
    throw new RuntimeException();
  } catch(Exception e){
    //log
  }
}

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

如果没有进一步的编码,以下两个测试将失败:

@Test
public void fail1() {
    throw new NullPointerException("Will fail");
}

@Test
public void fail2() throw IOException {
    throw new IOException("Will fail");
}

在JUnit 4中,您可以使用@Test批注的expected属性明确断言@Test应该失败,并带有给定的异常:

  @Test(expected = NullPointerException.class)
  public void expectNPE {
     String s = null;
     s.toString();
  }

请参阅有关它的JUnit4文档

使用 : assert 或 Assert.assertTrue 最后随心所欲

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM