Questa è una domanda di carattere generale relativa ai bulloni di test unità e ai beccucci in una topologia Storm scritta in Java.Test di bulloni e becchi di sfiato
Qual è la pratica raccomandata e linee guida per l'unità-test (JUnit?) Bulloni e beccucci?
Per esempio, potrei scrivere un test JUnit per un Bolt
, ma senza comprendere appieno il quadro (come il ciclo di vita di un Bolt
) e le implicazioni di serializzazione, facilmente fare l'errore di creazione Costruttore a base di non-serializzabile variabili membro. In JUnit, questo test sarebbe passato, ma in una topologia, non avrebbe funzionato. Immagino che ci siano molti punti di prova da considerare (come questo esempio con Serialization & lifecycle).
Pertanto, è consigliabile che se si utilizza unit test JUnit base, si esegue una piccola topologia finto (LocalMode
?) E testare il contratto implicito per il Bolt
(o Spout
) sotto quella della topologia? Oppure, è GIUSTO usare JUnit, ma l'implicazione è che dobbiamo simulare il ciclo di vita di un Bolt (crearlo, chiamare prepare()
, deridere uno Config
, ecc.) Attentamente? In questo caso, quali sono i punti di test generali per la classe in esame (Bolt/Spout) da considerare?
Cosa hanno fatto altri sviluppatori per quanto riguarda la creazione di test di unità adeguati?
Ho notato che esiste un'API di test della topologia (vedere: https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java). È meglio utilizzare alcune di queste API e alzare "Topologie di test" per ogni singolo Bolt
& Spout
(e verificare il contratto implicito che il bullone deve prevedere, ad esempio: le uscite dichiarate)?
Grazie
Hai mai decidere su un approccio? –
Bene, ho letto le risposte qui sotto. Sembra che ci siano delle linee guida generali, ma niente di concreto. Ho intenzione di lasciare la domanda aperta per un po 'più a lungo per vedere se qualcun altro ha qualche pensiero quindi chiuderlo. Mi piacciono entrambi gli approcci all'utilizzo dell'API di test (TestingApiDemo.java) nonché la risposta per deridere le dipendenze, @ChrisGerken. – Jack