模拟 MessageDigest.getInstance() 抛出异常

tyr*_*dis 5 java unit-testing mocking

我得到了以下方法:

private MessageDigest getMessageDigest() {
    try {
        return MessageDigest.getInstance("MD5");
    } catch (NoSuchAlgorithmException e) {
        throw new Error(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

为了获得 100% 的代码覆盖率,我需要进入 catch 块。但我绝对不确定我该怎么做。在这种情况下,是否有一些模拟框架可以帮助我?如果是这样 - 如何?或者还有另一种方法而不必捕获异常吗?

Tho*_*dal 3

MessageDigest 上的 getInstance 方法看起来像一个静态方法。静态方法不能被模拟。我同意 Ratchet 的观点,即您不应该以 100% 的代码覆盖率为目标,而应该专注于测试具有复杂代码的区域。