En cuanto a la prueba de unidad, creo que lo que funcione para usted en la práctica es el camino a seguir. Es importante que las pruebas unitarias le den algún valor y mejoren la calidad de su sistema y su capacidad para desarrollarlo y mantenerlo.
Sugeriría que probablemente no desea copiar el db en vivo a su db de prueba. Probablemente no haya garantías de que su base de datos en vivo contenga datos adecuados que harán que sus pruebas unitarias se ejecuten consistentemente. Las pruebas unitarias deberían probar que tu código funciona, no deberían probar que la base de datos en vivo contenga datos adecuados que los hagan pasar, porque como está en vivo, tus usuarios podrían cambiar el contenido para que tus pruebas fallen. .
Su código de prueba unitaria probablemente debería completar su prueba db con los datos necesarios que simulan los escenarios para los que desea escribir las pruebas unitarias. Estuve jugando con el código de Ruby on Rails hace unos años; el marco de prueba para eso tendría una clase de prueba que configuraría el DB con algunos datos falsos, luego se escribirían varios métodos de prueba de la clase para correr contra esos datos, y el método de eliminación eliminaría los datos de la base de datos. Por lo tanto, las diferentes clases de prueba (o a veces las personas las llaman fixturas) se ejecutarían contra una determinada configuración de datos, lo que significaba que podría ejecutar una serie de pruebas contra la misma configuración de datos en lugar de crearla para cada caso de prueba que quisiera ejecutar. La configuración de los datos para cada prueba podría terminar haciendo que las pruebas se ejecuten lentamente, de modo que se aburra de esperar a que se ejecuten y deje de molestarse con ellas.
En esta publicación de blog, he mostrado un ejemplo de bases de datos de prueba/producción y accesorios para llenar la base de datos de prueba usando el lenguaje Go: https://automationangels.wordpress.com/2015/09/11/fixtures-propagating-test- database-for-unit-tests-in-go/Eche un vistazo, podría ser útil. – WhiteAngel