断言从java中的私有方法抛出的异常的另一种方法



我需要断言CustomException是从一个私有实用程序方法doSomething
抛出的

这是我迄今为止实施的,并且正在发挥作用。

在测试类级别定义规则

@Rule public ExpectedException exception = ExpectedException.none();

试验方法的相关部分

exception.expect(CustomException.class);
// prepare call to executePrivateMethod
try {
        executePrivateMethod(objInstance, "doSomething",
                arg0, arg1);
    } catch (InvocationTargetException e) {
        Assert.assertTrue("Invalid exception thrown",
                (e.getCause() instanceof CustomException));
        throw (CustomException) e.getCause();
    }
    Assert.fail("Invalid response");


我想知道是否有其他/优雅的方式可以实现这一点

P.S.:
1。非常有用的帖子,但没有提到我的场景
2。executePrivateMethod使用反射来调用私有方法

当抛出异常时需要进行额外验证时,您的设计是典型的。我唯一想说的是,你不需要failexception.expect会帮你解决这个问题。

此外,您不需要也不应该强制转换为CustomException。这可能导致ClassCastException,而不是声明expected CustomException, received SomeOtherException的漂亮错误消息。

相关内容

  • 没有找到相关文章

最新更新