我正在尝试为一种基于特定逻辑抛出异常的方法编写测试用例。然而,由于预期的异常和获得的异常不同,测试用例失败。
测试方法-
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
,因此您的测试失败了。
关于java - 使用 Junit 测试抛出异常的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50405877/