Ho un metodo privato che prende un elenco di valori interi mi restituisce un elenco di valori interi. Come posso usare power mock per testarlo. Sono nuovo di powermock. Posso fare il test con facile simulazione ..? come ..Test del metodo privato utilizzando power mock che restituisce l'elenco di Integers
risposta
Da the documentation, nella sezione chiamata "Common - Bypass incapsulamento":
Usa Whitebox.invokeMethod (..) per invocare un metodo privato di un'istanza o classe.
È inoltre possibile trovare esempi nella stessa sezione.
il collegamento è morto ora –
Whitebox.invokeMethod(myClassToBeTestedInstance, "theMethodToTest", expectedFooValue);
Ho trovato che l'istanza di classe deve essere utilizzata piuttosto che l'oggetto di classe. (vale a dire myClassToBeTestedInstance anziché ClassToBeTested.class) –
@RabRoss corretto, corretto, grazie! –
Ecco un esempio completo come fare ad esso:
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.powermock.reflect.Whitebox;
class TestClass {
private List<Integer> methodCall(int num) {
System.out.println("Call methodCall num: " + num);
List<Integer> result = new ArrayList<>(num);
for (int i = 0; i < num; i++) {
result.add(new Integer(i));
}
return result;
}
}
@Test
public void testPrivateMethodCall() throws Exception {
int n = 10;
List result = Whitebox.invokeMethod(new TestClass(), "methodCall", n);
Assert.assertEquals(n, result.size());
}
Penso che si dovrebbe ottenere più aiuto se ti ha dato un esempio specifico di ciò che si è tentato e ciò che non funziona. – jhericks