Domanda

Sto affrontando quello che penso sia un problema comune, ma non ho trovato molte discussioni o strumenti esistenti per affrontarlo. Sto cercando di impostare un sistema di test di integrazione (già con una forte suite di test unitari) che supporta il QA di invio di dati di input e risultati previsti (sotto forma di file flat, idealmente) che può essere eseguito da una classe di junit standardizzata.

Ho un piano per lanciare il mio qui usando il Junit @Paramaterized annotazione. Sto immaginando ogni insieme di dati e risultati con un file di controllo e tutti i file di controllo vengono inseriti in una directory. Il metodo del generatore di parametri scansionerebbe questa directory e restituirebbe un elenco di questi file. Il costruttore di test leggerebbe quindi questo file e imposterebbe i dati di input e i risultati previsti.

Prima di iniziare a scrivere questo, volevo vedere se esistevano già strumenti per fare questo tipo di cose e, in caso contrario, ottenere alcune opinioni sulla soluzione che sto proponendo.

L'applicazione stessa è uno strumento di tipo ETL puramente back -end, che prende dati da diversi file di input in vari formati e produce risultati in un database. Ho già alcuni test di integrazione statica che utilizzano un derby nel database di memoria per verificare i risultati per i dati di input banali e ho intenzione di utilizzare un sistema simile per confermare i dati qui. I risultati previsti sarebbero sotto forma di (key_value, column, expected value) triple. Voglio usare Junit per legare il resto delle nostre infrastrutture di test e risultati dei risultati.

È stato utile?

Soluzione

Dai un'occhiata a Spock, un framework di test basato su Groovy con un forte supporto per i test basati sui dati. Spock è progettato per testare il codice Java (e Groovy) ed è completamente compatibile con Junit (in effetti, i test di Spock sono eseguiti con Junit). Vedere qui Per un semplice test di esempio che estrae i dati da un database.

In generale, il tuo piano mi sembra ragionevole e può anche essere realizzato con Junit semplice e @parameterized. Spock e Groovy possono semplificare la vita. Ad esempio, lavorare con file di testo e database è molto più semplice in Groovy che in Java.

Disclaimer: sono il creatore di Spock.

Altri suggerimenti

Preferisco Spock me stesso. Ma vedo che esiste un framework di JunitParams là fuori che è molto più leggibile dei test parametrizzati di Straight Junit:

https://github.com/pragmatists/junitparams

Una grande descrizione può essere trovata su:

https://weblogs.java.net/blog/johnsmart/archive/2014/07/23/data-driven-unit-testing-java

Per altri che colpiscono questa domanda ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top