Buscando algunos consejos prácticos aquí y cualquier experiencia que la gente haya tenido en una situación similar.TDD: Métodos de "solo prueba"
Usamos una metodología de BDD/TDD para construir nuestro software (aplicación bastante grande/compleja) El resultado final es .. especificaciones de comportamiento (estilo Dado/Cuando/Luego) derivado de los requisitos del negocio, pruebas unitarias que reflejan estos y código que refleja los requisitos de las pruebas. Sin embargo, recientemente nuestro departamento de pruebas ha comenzado a ejecutar pruebas de integración y comprensiblemente quieren usar nuestro código de lógica empresarial (ya aprobado) para configurar y desmontar el estado de prueba (en lugar de tener que tratar directamente con una base de datos) se preocupan principalmente por las pruebas a través de la interfaz de usuario de la aplicación y no quieren gastar todo el día disputando bases de datos.
El problema es que algunos de los repositorios de entidades no tienen métodos de eliminación ya que todavía no se han expresado los requisitos empresariales. Muchos tienen Archive/Reinstate/backup, etc. (y pueden tener pendientes pendientes en el backlog).
Así que ahora tenemos un departamento de pruebas. requisito para la eliminación (pero uno que entra en conflicto con las historias de usuarios de negocios)
Entonces .... Mi pregunta es ... si tuviera que agregar métodos específicamente para el departamento de pruebas ... cuál es la mejor manera de manejar estas. Entiendo que esto generalmente se considera una mala práctica en "Utopía TDD", pero de manera realista, ¿cómo se ha enfrentado a este tipo de conflicto?
Los primeros pensamientos que he tenido son o bien el uso de nombres ...
void TestOnly_Delete(Guid id){}
... atributos ...
[TestOnly]
void Delete(Guid id){}
... o directivas del compilador ...
#if TESTBUILD
void Delete(Guid id){}
#endif
Por lo menos, los desarrolladores pueden saber que no se deben llamar a los métodos TestOnly y, como máximo, los métodos de prueba no se implementan en las compilaciones de producción.
... o simplemente hacer trampa y añadir una historia de usuario para gestionar esa manera ;-)
Cualquier experiencia o consejo agradecido apreciado?
Gracias de antemano.