使用 jmockit 测试私有 void 方法
Testing private void method using jmockit
我有一个 class 的私有 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");
}
在我看来,每个私有方法都必须在同一个 class 中使用 public 方法中的某处。所以测试那个 public 方法它会自动测试那个私有方法。
在JMockit中调用Deencapsulationclass可以调用私有方法
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());
}
我有一个 class 的私有 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");
}
在我看来,每个私有方法都必须在同一个 class 中使用 public 方法中的某处。所以测试那个 public 方法它会自动测试那个私有方法。
在JMockit中调用Deencapsulationclass可以调用私有方法
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());
}