java - 使用 Junit 测试抛出异常的方法

标签 java junit mockito

我正在尝试为一种基于特定逻辑抛出异常的方法编写测试用例。然而,由于预期的异常和获得的异常不同,测试用例失败。

测试方法-

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/

相关文章:

Java继承和后期绑定(bind),为什么int id有父类的值,没有子类的值?

java - Primefaces 更新破坏变音符号

junit - 为什么 gitlab CI 找不到我的 junit 报告工件?

java - Mockito 没有从具有多个 "when"条件的模拟方法返回正确的结果

java - Mockito:如何测试调用了构造函数?

java - 需要在网络服务中使用自定义类而不是生成(由 wsimport)

java - 数组逻辑错误

java - 如何动态创建 Spring bean 并在新创建的 bean 上设置注释

unit-testing - 在一个庞大而古老(5 年)的代码库中进行单元测试是否值得?

java - 为什么 PowerMockito 没有正确模拟此类?