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();
}
}
Die Ausnahme:PowerMock statische Klasse nicht spotten nicht
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.
ich es durch Intellij leite, die Legacy-Code viele Methoden hat ...
Jemand hat und die Idee, ich ging über die offiziellen tuto, kein Mittelwert diesen einfachen Test an dieser Antwort
Danke, yeah, Sie wählen nicht den Legacy-Code :), aber Sie können refaktorieren ... machen Sie statische Mock und wenden Sie mockable Muster an. – Sam
Vereinbarter Legacy-Code ist ein Schmerz, PowerMock ist in der Tat in diesen Fällen mächtig :) – Brice
Das ist einfach nicht wahr: "Sie sollten' Mockito.when' auch nicht verwenden, wenn Sie statische Aufrufe stummschalten wollen ". Die PowerMockito-Verwendungsseite verwendet 'Mockito.when' in ihrem Beispielcode. – ach