-------------------------------------------- On Wed, 3/18/15, Victor Paredes <tato...@gmail.com> wrote:
Subject: [arquitectura] Problemas para realizar Testing. To: josedebai...@yahoo.com Date: Wednesday, March 18, 2015, 2:48 PM Entendi perfecto! Entonces... resumiendo: Tenes codigo legacy con una confusa separacion de responsabilidades la cual no te permite ejecutar facilmente pruebas de integracion entre componentes ( me imagino constructores con muchisimos parametros ). Mantener los test integrales te ocasiona un costo cada ves mayor. Si decidis mantener los test integrales ubicalos en un proyecto aparte, si trabajas con MSTEST podes utilizar los metodos SETUP y TEARDOWN para realizar la preparacion de tu entorno de datos sin tocar el contexto de EF. Si decidis buscar una mejor opcion, te recomiendo ver alguna herramienta de automatizacion de pruebas tipo Selenium, hace un tiempo escribi un articulo sobre esta herramienta que me dio muy buenos resultados. El 18 de marzo de 2015, 13:14, Mariano German Villarreal Kuber <german.ku...@gmail.com> escribió: Gracias por la respuesta Vic.Te cuento no estoy haciendo TDD, y no existe la posibilidad de re encaminar el proyecto a TDD por la cantidad de código y una arquitectura sin separación de responsailidad.Básicamente mi proyecto solo tiene test de integración, ya que si un test no le pega a la base de datos, en mi caso no tiene sentido, ya que como mencione anteriormente cada método conciste en una consulta a la db.Ahora quizás mi pregunta entonces seria, como organizo mis test de integración, esta bien que genere data dummy la inserte y luego la consulte ? Saludos. El 18 de marzo de 2015, 13:03, Victor Paredes <tato...@gmail.com> escribió: Ok, vayamos por el principio. ¿ Estas intentando hacer TDD ? Yo entiendo que no ya que no cumple ninguno de los principios FIRST. Tus test dependen de una base de datos y el resultado de una ejecucion puede dejar basura y afectar otros tests Si estas queriendo aplicar TDD te recomiendo ver la forma de volver al buen camino ya que mientras mas avances peor vas a estar ( ya de por si comentas que agregar o modificar Test te cuesta horrores ). Si estas queriendo probar la comunicacion de su assemblie con la base de datos lo que necesitas hacer son test de integracion. Para realizar estas pruebas yo uso MSTEST, creo un proyecto nuevo de test ( completamente separado de los Test Unitarios ) y en ese proyecto realizo todas las pruebas de integracion. Otra cosa que me hace ruido, y lo digo desde mi ignorancia de tu proyecto, es que debas tener tanto codigo en tu capa de datos aun que posiblemente sea una necesidad inevitable. El 18 de marzo de 2015, 12:25, Mariano German Villarreal Kuber <german.ku...@gmail.com> escribió: Buenos días chicos. Estoy teniendo un quilombito a la hora de hacer testing. Les cuento que la aplicación en la que trabajo es una aplicación puramente centrada en la capa de datos. La lógica de negocio se traduce básicamente en consultas Linq. Ahora el problema particular, es como realizar test. Al momento por cada test que tengo que crear, debo crear datos dummy, insertarlos en la base de datos y luego consumir los metodos que querean sobre esa tabla, una vez que el test termino, eliminar los registro de la base de datos. Como lo estoy haciendo ? Tuve que generar un método que se atachee al contexto de entity dentro del Initialize del Test, y que cada vez que detecte que se agrega o se realiza update, este método guardo los objetos en una lista. Y una vez que el test finaliza roolbackea la acción que se haya aplicado sobre este objeto. Esto funciona pero al pasar de ambiente y como es logico me encuentro que ya hay datos en la base, y que si mis test, no los genero con datos muy "raros" (para evitar que por alguna casualidad haya otro similar en la db), estos rompen. Mas alla del trabajo artesanal que tuve que hacer y que desde ya es discutible si esta bien o no. Me gustaría saber como testear este tipo de aplicaciones. Para la generación de objetos estoy aplicando el patrón Builder, el cual tiene el control total de los objetos a generar en cada Test. De todos modos, no veo cómodo nada de esto, cada vez que tengo que meter un nuevo test es un parto, ni les cuento de modificar. Espero que se haya comprendido el problema y puedan darme una ayuda. Saludos. -- Victor Paredes -- Victor Paredes