Qual è il modo consigliato per creare dati di test per i casi di test unitario?

2

Sono nuovo al test TDD / unità.

Ho intenzione di scrivere un algoritmo di programmazione complesso in Java. Poiché questo modulo è una parte fondamentale della nostra applicazione e ci sono numerosi scenari in esso, voglio scrivere casi di test unitari per ogni caso.

Per calcolare questo programma, ho bisogno di interagire con 25-30 entità e ogni entità, in media, ha 10 campi.

Costruire dati così grandi per ogni caso di test (forse posso riutilizzare alcuni dei dati di entità di base), sembra un compito estenuante.

La mia domanda è, come fanno le altre persone a risolvere questo problema?

PS: voglio evitare di leggere i dati dal database poiché ciò creerebbe una dipendenza.

    
posta Bhushan Patil 01.12.2018 - 07:04
fonte

2 risposte

7

What is recommended way to create test data for unit test cases?

Usa una lavagna

To compute this schedule, I need to interact with 25-30 entities and each entity, on average, have 10 fields.

No. Devi tornare alla lavagna.

Non è necessario interagire con 250 campi per creare un test utile. Devi abbattere il problema in parti più piccole. Se in qualche modo sei riuscito a scrivere un test che utilizzava 250 campi, di certo non mi fiderei di lui perché non avrei alcuna speranza di comprenderlo.

Il punto di test è di aiutarci a leggere il codice. Abbattiamo i problemi in piccoli pezzi gestibili perché siamo fortunati se i nostri cervelli riescono a ricordare 7 cose allo stesso tempo. Mi stai semplicemente chiedendo di ricordare troppo se vuoi che capisca un test con 250 campi.

Questo non vuol dire che non possiamo avere problemi che coinvolgono 250 campi. Solo non chiedermi di pensarci tutti insieme. I problemi di pianificazione riguardano generalmente tre aspetti: durata, prerequisiti e risorse. Tieni a mente quel semplice modello del problema mentre spingi via i dettagli per essere affrontato da altre astrazioni.

Questo è design. Non puoi semplicemente sottoporre i test a un problema senza utilizzarlo per semplificare ciò che devi testare. Una volta fatto, sarai in grado di annotare casi che vuoi dimostrare di poter gestire. Ecco da dove provengono i dati del test.

    
risposta data 01.12.2018 - 16:38
fonte
0

My question is, how other people solve this problem ?

In Java, normalmente lo faccio caricando le risorse di test dal classpath.

La maggior parte dei miei progetti utilizza Maven; quindi le mie risorse di test sono tutte sotto src/test/resources ; all'interno del mio cablaggio di test, accedo ai dati tramite InputStream restituito da Class::getResourceAsStream .

Nella maggior parte dei casi in cui ho bisogno di fare questo, avrò un file di esempio già disponibile (i dati salvati dalla produzione, per esempio).

Molto raramente scriverò un programma per produrre i dati di cui ho bisogno, quindi li salverò in un file di risorse che verrà caricato dai test.

Se si suppone che i dati siano immutabili ed è di grandi dimensioni e non particolarmente leggibili, allora posso mettere la risorsa di test in un jar, che distribuisco nel mio repository, piuttosto che commettere la risorsa di test sul mio codice sorgente repository.

    
risposta data 01.12.2018 - 12:29
fonte

Leggi altre domande sui tag