【问题标题】:Testing private void method using jmockit使用 jmockit 测试私有 void 方法
【发布时间】:2015-07-28 09:45:27
【问题描述】:

我有一个类的私有 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");
}

【问题讨论】:

    标签: java jmockit


    【解决方案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());
      }
      

      【讨论】:

        猜你喜欢
        • 2013-03-13
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多