Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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_Mockito - Fatal编程技术网

Java 测试使用Junit引发异常的方法

Java 测试使用Junit引发异常的方法,java,junit,mockito,Java,Junit,Mockito,我正试图为一个方法编写一个测试用例,该方法基于特定的逻辑抛出一个异常。但是,测试用例失败,因为预期异常和获得的异常不同 测试方法- public void methodA (//parameters) throws ExceptionA { certainlogic=//call some method if (certainlogic) throw new ExceptionA(//exception details) else //code snippet } 试验方法- @Tes

我正试图为一个方法编写一个测试用例,该方法基于特定的逻辑抛出一个异常。但是,测试用例失败,因为预期异常和获得的异常不同

测试方法-

public void methodA (//parameters) throws ExceptionA
{
certainlogic=//call some method
if (certainlogic)
throw new ExceptionA(//exception details)
else
//code snippet
}
试验方法-

    @Test (expected=ExceptionA.class)
    public void testMethodA
    {
    try
    {
    when (//mock method).thenReturn(true);
    //call methodA
    }
    catch (ExceptionA e)
    {
    fail(e.printStackTrace(e));
    }
    }
我收到以下错误-

Unexpected exception, expected<cExceptionA> but was<java.lang.AssertionError>
意外异常,应为,但为

如何解决此问题?

您必须删除测试中的
捕获项

@Test (expected=ExceptionA.class)
public void testMethod()
{
    when (//mock method).thenReturn(true);
    //call methodA
}

否则,您将捕获
异常a
,并通过调用
fail
抛出断言错误。显然,
AssertionError
不是
例外,因此测试失败。

您应该完全删除try-catch块,或者至少删除catch。 “expected=ExceptionA.class”告诉junit监视抛出的异常,捕获它们并将它们的类与给定的类进行比较。 如果捕获抛出的异常,@Test注释的junit方法无法检测是否抛出了此类异常。
通过调用fail(…),您隐式抛出junit检测到的AssertionError,因此您的测试失败,因为AssertionError.class!=异常类

共享更多代码,尤其是测试类的代码。我认为您正在检查catch或finally块中的断言。您在测试方法中断言了什么吗?显示实际代码。您声明发生了断言错误,但显示的代码中没有任何断言。因此,要么没有引发异常,要么在调用引发ExceptionRemove预期异常的方法之前,断言失败。现在,您仍然应该从某个assert中获取AssertionError。您将在堆栈跟踪中看到它,可以调试junit测试等等。在eclipse中,需要为失败的测试单击junit树视图。@Arnab捕获异常。你不应该。那是你的问题