[英]Mocking static class with powermockito
即使我按照手冊,我似乎無法使用PowerMock模擬靜態方法。 我正試圖嘲笑一個單身人士的神級。
測試代碼如下:
@RunWith(PowerMockRunner.class)
@PrepareForTest(GodClass.class)
public class SomeTestCases {
@Test
public void someTest() {
PowerMockito.mockStatic(GodClass.class);
GodClass mockGod = mock(GodClass.class);
when(GodClass.getInstance()).thenReturn(mockGod);
// Some more things mostly like:
when(mockGod.getSomethingElse()).thenReturn(mockSE);
// Also tried: but doesn't work either
// when(GodClass.getInstance().getSomethingElse()).thenReturn(mockSE);
Testee testee = new Testee(); // Class under test
}
}
和受試者:
class Testee {
public Testee() {
GodClass instance = GodClass.getInstance();
Compoment comp = instance.getSomethingElse();
}
}
但是,這不起作用。 調試模式顯示instance
為null
。 必須做些什么不同?
(是的,我知道代碼很糟糕,但它是遺留的,我們希望在重構之前進行一些單元測試)
我剛剛進入了你所擁有的東西,它對我來說很好。
public class GodClass
{
private static final GodClass INSTANCE = new GodClass();
private GodClass() {}
public static GodClass getInstance()
{
return INSTANCE;
}
public String sayHi()
{
return "Hi!";
}
}
public class Testee
{
private GodClass gc;
public Testee() {
gc = GodClass.getInstance();
}
public String saySomething()
{
return gc.sayHi();
}
}
@RunWith(PowerMockRunner.class)
@PrepareForTest(GodClass.class)
public class GodClassTester
{
@Test
public void testThis()
{
PowerMockito.mockStatic(GodClass.class);
GodClass mockGod = PowerMockito.mock(GodClass.class);
PowerMockito.when(mockGod.sayHi()).thenReturn("Hi!");
PowerMockito.when(GodClass.getInstance()).thenReturn(mockGod);
Testee testee = new Testee();
assertEquals("Hi!", testee.saySomething());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.