Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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 我们能否验证,单元测试的方法中没有发生异常_Java_Junit - Fatal编程技术网

Java 我们能否验证,单元测试的方法中没有发生异常

Java 我们能否验证,单元测试的方法中没有发生异常,java,junit,Java,Junit,ATest.java- 当testdisplay2()方法中没有出现异常时,我们是否可以验证,就像我们在testdisplay1()中出现异常时预期的那样 你所说的是对的。尝试更改display()以始终抛出AISTureException,您将看到testdisplay2()给出了一个错误。您所拥有的是正确的。尝试更改display()以始终引发AISTureException,您将看到testdisplay2()给出错误。预期的行为是不会引发异常。如果抛出任何参数,测试将失败,除非注释中有一

ATest.java- 当testdisplay2()方法中没有出现异常时,我们是否可以验证,就像我们在testdisplay1()中出现异常时预期的那样


你所说的是对的。尝试更改
display()
以始终抛出
AISTureException
,您将看到
testdisplay2()
给出了一个错误。

您所拥有的是正确的。尝试更改
display()
以始终引发
AISTureException
,您将看到
testdisplay2()
给出错误。

预期的行为是不会引发异常。如果抛出任何参数,测试将失败,除非注释中有一个
预期的
参数,就像您在
testdisplay1
测试中的参数一样


另外,这是一个很好的解读:

预期的行为是不会抛出异常。如果抛出任何参数,测试将失败,除非注释中有一个
预期的
参数,就像您在
testdisplay1
测试中的参数一样



另外,这是一个很好的解读:

如果发生了不应该发生的异常,测试本身就会失败。您可以将display方法的返回类型更改为int或其他仅在未引发异常时才会返回的类型,并检查返回值是否存在。您可以重命名测试方法以传达预期的行为,例如:
当两个参数均为REFALSE()
@XtremeBaumer是时,显示不存在异常。如果我更改返回类型,则可以使用断言返回值。但这里的返回类型是无效的,我无法更改。无论如何,我可以测试特定异常是否没有发生。您可以尝试
预期=AIsTrueException.class | | BIsTrueException.class
我自己从未尝试过。如果发生了不应该发生的异常,测试本身就会失败。您可以将display方法的返回类型更改为int或只有在未引发异常时才会返回的内容,并检查返回值是否存在。您可以重命名测试方法以传达预期的行为,例如:
当两个参数均为REFALSE()
@XtremeBaumer是时,显示不存在异常。如果我更改返回类型,则可以使用断言返回值。但这里的返回类型是无效的,我无法更改。无论如何,我可以测试特定异常是否没有发生。您可以尝试
预期=AIsTrueException.class | | BIsTrueException.class
我自己从未尝试过。如果引发任何异常,则可能是。。。我们使用期望值。但是在这里我想验证没有从方法中抛出异常。如果有任何异常被抛出,测试将失败。因此,如果测试成功,就意味着没有抛出异常。是的,您是正确的。但是我们不能用一些代码来验证这一点。无论如何,谢谢。。如果测试成功,我会同意的。。。未引发异常..如果引发任何异常,则为是。。。我们使用期望值。但是在这里我想验证没有从方法中抛出异常。如果有任何异常被抛出,测试将失败。因此,如果测试成功,就意味着没有抛出异常。是的,您是正确的。但是我们不能用一些代码来验证这一点。无论如何,谢谢。。如果测试成功,我会同意的。。。没有引发异常。。
class A{
  public void display(){
    ...
    ...
    ...
    if(a){
     throw new AIsTrueException("a true");
    }

    if(b){
     throw new BIsTrueException("b true");
    }

  }
}

class BTest{
...
@InjectMock
A subject;
...
@Test(expected=AIsTrueException.class)
public void testdisplay1(){
    subject.display(true,false);
}

@Test
public void testdisplay2(){
    subject.display(false,false);
    // Here how can I verify that no exception has occured in display(),
    // (When exception occured we use expected = ...)
    // Do we have similar when no exception occured
} 
...
...
}