[英]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.