簡體   English   中英

不使用 PowerMock 或 PowerMockito 的單元測試單例

[英]Unit testing singleton without using PowerMock or PowerMockito

我正在為單例 Java 類編寫單元測試(使用 JUnit 和 Mockito)。 我無法更改類實現本身。

使用 PowerMockito,它是這樣的(並且有效):

@Mock
    private TheSingleton theSingleton;

@Before
    public final void setUp()
        throws Exception
    {
        MockitoAnnotations.initMocks( this );

        PowerMockito.mockStatic( TheSingleton.class );
        when( TheSingleton.getInstance() ).thenReturn( theSingleton );
        ...
    }

要求是在使用 PowerMock 或 PowerMockito 或任何其他靜態模擬 API 的情況下重寫測試。 由於我無法將單例類更改為使用依賴注入,因此我不確定這樣做的好方法是什么。

任何幫助將不勝感激。

您基本上沒有其他選擇。 如果沒有任何類型的靜態模擬框架,例如 PowerMock 或 PowerMockito,或者編寫您自己的代碼來執行與這些框架相同的事情,您將無法做您想做的事。 抱歉,我知道這不是您想要的答案,但我相信這就是答案。

另請參閱如何通過反射更改方法行為? 為什么 Mockito 不模擬靜態方法? 了解更多信息。

durian-globals是實現這一目標的無反射方式。 您確實犧牲了一點運行時性能,但在我們的任何生產用例中都不是一個可衡量的數量。

暫無
暫無

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

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