Sto configurando i metodi statici di una classe. Devo farlo in un metodo di installazione JUnit brevettato @Before
-annotato.PowerMock, simulare un metodo statico, POI chiamare i metodi reali su tutte le altre statiche
Il mio obiettivo è impostare la classe per chiamare i metodi reali, eccetto per quei metodi che ho preso in giro esplicitamente.
In sostanza:
@Before
public void setupStaticUtil() {
PowerMockito.mockStatic(StaticUtilClass.class);
when(StaticUtilClass.someStaticMethod(antString())).thenReturn(5); // mock out certain methods...
// Now have all OTHER methods call the real implmentation??? How do I do this?
}
Il problema che sto funzionando in è che all'interno StaticUtilClass
il metodo public static int someStaticMethod(String s)
getta purtroppo RuntimeException
se fornito con un valore null
.
quindi non posso semplicemente andare via evidente di chiamare i metodi reali come la risposta predefinita nel modo seguente:
@Before
public void setupStaticUtil() {
PowerMockito.mockStatic(StaticUtilClass.class, CALLS_REAL_METHODS); // Default to calling real static methods
// The below call to someStaticMethod() will throw a RuntimeException, as the arg is null!
// Even though I don't actually want to call the method, I just want to setup a mock result
when(StaticUtilClass.someStaticMethod(antString())).thenReturn(5);
}
ho bisogno di impostare la risposta predefinita per chiamare i metodi reali su tutti gli altri metodi statici dopo Prendo in giro i risultati del metodo che mi interessa prendere in giro.
È possibile?
Non vedo neanche un stub() o un metodo mockStaticPartial() nella mia classe PowerMockito. Versione 1.5. Nella mia versione 1.9.5 della classe Mockito, vedo un metodo stub() qui: http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#stub(T) leggendo comunque i documenti che ho trovato questo: http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#when(T) che rileva che ** when() è un successore di stub deprecato (Object) **, quindi I non pensate che quel metodo sia destinato a essere usato più, e non farebbe quello che mi serve a prescindere. –
mockStaticPartial è definito per EasyMock - Non ho capito che stavi chiedendo esplicitamente per Mockito - http://powermock.googlecode.com/svn/docs/powermock-1.5/apidocs/org/powermock/api/easymock/PowerMock. html – zibi
lo stub è definito in MemberModifier che è una superclasse di PowerMockito - è lì! - http://powermock.googlecode.com/svn/docs/powermock-1.5/apidocs/org/powermock/api/support/membermodification/MemberModifier.html#stub%28java.lang.reflect.Method%29 – zibi