在最终类中测试私有方法

dzi*_*iki 4 java junit mockito powermock

我想在最终的utitlity类中测试一个私有方法.

1.班级本身:

班级签名是:

public final class SomeHelper {

    /** Preventing class from being instantiated */
    private SomeHelper() {
    }
Run Code Online (Sandbox Code Playgroud)

并且有私有方法本身:

private static String formatValue(BigDecimal value)
Run Code Online (Sandbox Code Playgroud)

测试已经完成了,但是之前,该方法是在没有私有构造函数的非实用非final类中.

测试已经使用@RunWith(Parameterized.class)了.

现在我得到的只是一个例外:

org.mockito.exceptions.base.MockitoException: 
Cannot mock/spy class com.some.package.util.SomeHelper
Mockito cannot mock/spy following:
  - final classes
  - anonymous classes
  - primitive types
Run Code Online (Sandbox Code Playgroud)

2.测试

该测试中最重要的一行是:

String result = Whitebox.invokeMethod(mValue, "formatValue", mGiven);
Run Code Online (Sandbox Code Playgroud)

有没有办法让测试工作?

Jor*_*lla 7

您不需要测试私有方法.

但是你应该测试那些使用它的人.如果调用私有方法的方法按预期工作,则可以假定私有方法正常工作.

为什么?

没有人会单独调用此方法,因此不需要进行单元测试.