Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果代码中存在异常,如何使Junit测试用例失败?_Java_Junit_Junit4 - Fatal编程技术网

Java 如果代码中存在异常,如何使Junit测试用例失败?

Java 如果代码中存在异常,如何使Junit测试用例失败?,java,junit,junit4,Java,Junit,Junit4,我编写了一个Junit测试来对代码进行单元测试。当我的代码中出现任何异常时,我希望我的Junit测试用例失败。我尝试使用assert语句,但即使在代码中出现异常,Junit测试用例也会通过。有谁能告诉我怎样才能做到这一点?谢谢。我强烈建议您只能测试您的功能。如果抛出异常,测试将自动失败。如果没有抛出异常,您的测试将全部显示为绿色 但是,如果您仍然希望编写在异常情况下应该失败的测试代码,请执行以下操作:- @Test public void foo(){ try{ //execu

我编写了一个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");
   }
}

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

如果不进一步编码,以下两项测试都将失败:

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

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

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

@Test
public void test(){
  testClass.test();
}
测试失败的方法:

public void test(){
  throw new RuntimeException();
}
测试不会失败的方法

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

在JUnit4中,您可以使用
@Test
注释的
expected
属性显式断言@Test应该失败,并出现给定的异常:

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

请参阅。

我猜您使用了
失败
?请显示您的代码。JUnit应该在抛出异常时自动使测试失败。错误,根据doc“当且仅当抛出指定类的异常时才导致测试方法成功”,因此您可以说相反;-)出于历史原因,我们将其保留,但如果得到任何负数,则将其删除。