public class TestStatic {
public static int methodstatic(){
return 3;
}
}
@Test
@PrepareForTest({TestStatic.class})
public class TestStaticTest extends PowerMockTestCase {
public void testMethodstatic() throws Exception {
PowerMockito.mock(TestStatic.class);
Mockito.when(TestStatic.methodstatic()).thenReturn(5);
PowerMockito.verifyStatic();
assertThat("dff",TestStatic.methodstatic()==5);
}
@ObjectFactory
public IObjectFactory getObjectFactory() {
return new org.powermock.modules.testng.PowerMockObjectFactory();
}
}
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
Also, this error might show up because:
1. you stub either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
2. inside when() you don't call method on mock but on some other object.
我的IntelliJ通過運行它,舊的代碼有很多的方法...
有人有想法和我去通過官方tuto,無意讓這個簡單的測試工作
謝謝,是啊,你不選擇遺留代碼:),但你可以重構......虐待靜態模擬和應用可嘲弄的模式。 – Sam
同意的遺留代碼是一個痛苦,PowerMock確實在這些情況下是強大的:) – Brice
這只是不正確的:「如果你想存根靜態調用,你也不應該使用'Mockito.when'」。 PowerMockito使用頁面在其示例代碼中使用'Mockito.when'。 – ach