簡體   English   中英

如何在Java中的單例(枚舉樣式)上調用私有方法?

[英]How to Invoke a private method on a singleton (Enum style) in java?

有沒有一種方法可以調用枚舉單例的私有靜態方法? 例如,假設我有一些遺留代碼需要測試,其結構如下:

public enum Singleton {

    INSTANCE;

    private static double methodToTest() {
        return 1.0;
    }       

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

我將如何創建一個methodToTest測試methodToTest的類? 我曾嘗試使用Whitebox(包含在PowerMock中)進行反射,但是我沒有運氣。 有辦法嗎?

我知道直接測試私有方法不是首選的方法,但是我想知道是否有可能直接測試私有方法。 我試圖使代碼被識別為Java,但未成功。

我能夠調用該方法嘗試以下代碼

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

不要忘記在PrepareForTest中添加Singleton類

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM