Approcci per isolare i test che richiedono un database? [duplicare]

2

Supponiamo di avere componente A , B , C che tutti mettono alcuni dati in un database. Ogni componente dipende dai dati nel database inserito dal componente precedente.

Come faccio a testare questi moduli da soli? Ho già dei test a livello di unità, ma ora voglio testare con il database. Ho visto dei suggerimenti per fare un dump del database per ogni passaggio, ma questa è una cosa disordinata da controllare per il controllo della versione e richiede un sacco di sforzo ogni volta che l'architettura cambia (che dove lavoro si traduce in "abbandonare i test!") .

Penso davvero che l'approccio migliore sia quello di svuotare il mio database di test prima di eseguire test e utilizzare alcuni strumenti per specificare le dipendenze di test per garantire il corretto ordine di esecuzione, ma questo sembra essere seriamente disapprovato dalle opinioni che ho letto. Per me sembra lo stesso di usare una fixture per ogni passo, tranne per il fatto che la fixture è solo un modo economico per nascondere la dipendenza.

    
posta bcoughlan 15.05.2013 - 18:23
fonte

1 risposta

0

Quindi a un livello elevato si creano set di dati nel codice che vengono applicati per ogni caso di test.

Dopo ogni test, il database viene ripristinato rilasciando, ricreando o troncando.

Non menzioni il framework o la lingua che stai usando, ma molti hanno metodi per usare le fixture per creare dati per i tuoi test che vengono resettati durante ogni ciclo di test.

Quello che devi fare è scegliere uno di questi framework e configurare il set principale di elementi di dati necessari per la tua applicazione. Quindi, per ogni test, il framework di test dovrebbe avere un meccanismo per popolare oggetti specifici (righe) con i dati necessari per lo scenario di test. Il framework dovrebbe quindi ricaricare il database e applicare i dati predefiniti per il test successivo.

link è ed è un esempio di un framework di fixture per Ruby on Rails.

    
risposta data 15.05.2013 - 18:41
fonte

Leggi altre domande sui tag