我正在尝试为基于特定逻辑引发异常的方法编写测试用例。但是,由于预期的异常和获得的异常不同,因此测试用例失败。

测试方法-

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>


我该如何解决这个问题?

最佳答案

您必须在测试中删除catch

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


否则,您将捕获ExceptionA并通过调用fail引发AssertionError。显然,AssertionError不是ExceptionA,因此您的测试失败。

09-12 03:51