Per quanto riguarda il test unitario, penso che qualsiasi cosa funzioni per voi in pratica è la strada da percorrere. È importante che i test unitari diano un certo valore e migliorino la qualità del tuo sistema e la tua capacità di svilupparlo e mantenerlo.
Ti suggerirei probabilmente di non voler copiare il db live sul db di prova. Probabilmente non ci sono garanzie che il tuo database live contenga dati adatti che possano far funzionare costantemente i tuoi unit test. I test unitari dovrebbero verificare che il tuo codice funzioni, non dovrebbero verificare che il database live contenga dati appropriati che li faccia passare, perché dato che è in diretta, gli utenti potrebbero cambiarne il contenuto in modo che i test falliscano .
Il codice di test dell'unità stesso dovrebbe probabilmente compilare il db di test con i dati richiesti che simulano gli scenari per cui si desidera scrivere i test unitari. Ho rovinato un po 'di codice rubino su rotaie qualche anno fa; il framework di test per questo avrebbe una classe di test che configurasse il db con alcuni dati falsi, quindi sarebbero stati scritti più metodi di test della classe per funzionare contro quei dati, e il metodo di rimozione eliminerebbe i dati dal database. Quindi, diverse classi di test (oa volte le persone chiamano fixtures) verrebbero eseguite contro una determinata configurazione di dati, il che significa che è possibile eseguire una serie di test sullo stesso set di dati anziché crearlo per ogni caso di test che si desidera eseguire. L'impostazione dei dati per ogni test potrebbe finire per rallentare i test, in modo da annoiarsi ad aspettare che vengano eseguiti e smettere di disturbarli.
fonte
2012-05-26 21:10:59
In questo post del blog ho mostrato un esempio di database di prova/produzione e dispositivi per riempire il database di test utilizzando la lingua Go: https://automationangels.wordpress.com/2015/09/11/fixtures-propagating-test- database-per-unit-test-in-go/Dai un'occhiata, potrebbe essere utile. – WhiteAngel