Ho sviluppato un'applicazione in Java e sto provando a creare test di unità usando Powermockito (dovrei aggiungere che sono nuovo al test dell'unità).Powermockito doNothing per il metodo con argomenti
ho una classe denominata risorsa che ha un metodo chiamato statico readResources:
public static void readResources(ResourcesElement resourcesElement);
ResourcesElement è anche codificata da me. Nel test, voglio creare la mia risorsa, quindi voglio che il metodo sopra non faccia nulla. Ho provato utilizzando questo codice:
PowerMockito.spy(Resource.class);
PowerMockito.doNothing().when(Resource.class, "readResources", Matchers.any(ResourcesElement.class));
Il test di unità genera un'eccezione:
org.mockito.exceptions.misusing.UnfinishedStubbingException: stubbing grezzo rilevato qui: -> a org.powermock .api.mockito.internal.PowerMockitoCore.doAnswer (PowerMockitoCore.java:36)
Powermockito suggeriscono anche che dovrei usare thenReturn o thenThrow dopo quando, ma sembra che il metodo 'when' ritorni vuoto quando viene chiamato dopo doNothing (che è logico). Se provo:
PowerMockito.when(Resource.class, "readResources", Matchers.any(ResourcesElement.class)).....
DoNothing non è un'opzione dopo il quando.
Sono riuscito a rendere i metodi senza argomenti per non fare nulla, utilizzando la versione a 2 argomenti del metodo. Ad esempio:
PowerMockito.doNothing().when(Moduler.class, "startProcessing");
Questo funziona (startProcessing non accetta argomenti).
Ma come posso creare metodi che accettano argomenti per non fare nulla con Powermockito?
Grazie, è stato così, ho dimenticato di annotare con @PrepareForTest (il mio altro esempio funzionava perché mi sono ricordato di annotare). – Anakin001
Nessun problema, mi è successo un paio di volte e ho perso alcune ore cercando di capirlo – Morfic
@ Anakin001: Cosa succede se il metodo ** "readResources" ** è privato e non statico in questo caso? –