La domanda più completa è, data una dipendenza che prevede una richiamata come parametro, come posso scrivere un test unitario che copra la logica di callback e ancora in grado di simulare la dipendenza?Come testare la logica di callback del test?
public class DoStuff {
public void runThis(Runnable callback) {
// call callback
}
}
public class ClassUnderTest {
private DoStuff stuffToDo;
public void methodUnderTest() {
this.stuffToDo.runThis(/*a runnable with some logic*/)
}
}
Nell'esempio precedente, avrei deridere stuffToDo
poiché devo verificare chiamate e uscite finte di chiamate di metodo. Tuttavia, il mocking runThis
ha come risultato che la logica di callback non è stata testata. Inoltre, la logica di callback sembra essere privata, quindi non mi aspetto di testarla direttamente; forse è un equivoco da parte mia.
Poiché i callback sono utilizzati piuttosto estensivamente, mi aspetto che ci sia un metodo comune per testarli ma non l'ho trovato.
Il callback deve essere testato solo in questo contesto? In tal caso, perché non scrivere semplicemente test per i vari callback che pianifichi di trasmettere, che esprimono la tua aspettativa dei loro risultati? Mi sto perdendo qualcosa? – Jonah
Hai provato a usare CountDownLatch come in questo esempio: http://stackoverflow.com/a/3802487/2301224 – Baker