如何在java中的单例(枚举样式)上调用私有方法?

时间:2013-12-17 21:02:29

标签: java unit-testing enums easymock powermock

有没有办法调用枚举单例的私有静态方法?例如,假设我有一些需要测试的遗留代码,它具有以下结构:

public enum Singleton {

    INSTANCE;

    private static double methodToTest() {
        return 1.0;
    }       

    public static String extremelyComplexMethod() {
        methodToTest();
        //Imagine lots more complex code here
        return "";
    }
}

我如何创建一个单独测试methodToTest的类?我尝试使用Whitebox(包含在PowerMock中)进行反射,但我没有运气。有办法吗?

我知道直接测试私有方法并不是首选的方法,但我想知道是否有可能直接测试私有方法。我试图让代码被识别为java,但我没有成功。

1 个答案:

答案 0 :(得分:0)

我能够调用该方法尝试以下代码

@RunWith(PowerMockRunner.class)
@PrepareForTest(Singleton.class)
public class MySingletonTest {   
    @Test
    public void test() throws Exception{ 
        Whitebox.invokeMethod(Singleton.class, "methodToTest");
    }
}

不要忘记在PrepareForTest中添加Singleton类