使用jmockit测试私有void方法

时间:2015-07-28 09:45:28

标签: java jmockit

我有一个类的私有void方法。我想用Jmockit测试它,有没有方法?

  private void logRetry(IOException ex) {
    if (log.isWarnEnabled()) {
        log.warn("I/O exception (" + ex.getClass().getName() + ") caught when processing request : "
                + ex.getMessage());
    }
    if (log.isDebugEnabled()) {
        log.debug(ex.getMessage(), ex);
    }
    log.info("Re-Trying the request on next available host");
}

2 个答案:

答案 0 :(得分:5)

在我看来,每个私有方法必须在同一个类的公共方法中使用某个地方。因此,测试该公共方法,它将自动测试该私有方法。

答案 1 :(得分:2)

可以通过在JMockit中调用Deencapsulation类来调用私有方法。

invoke(java.lang.Object objectWithMethod,
 java.lang.String methodName, java.lang.Object... nonNullArgs)

在您的情况下,您可以执行类似

的操作
@Test
public void testLogRetry() {
    YourClass testCalss = new YourClass();
    Deencapsulation.invoke(testClass, "logRetry", new IOException());
}