He encontrado varias convenciones para las pruebas de unidad de mantenimiento en un proyecto y No estoy seguro de qué enfoque sería adecuado para nuestro próximo proyecto de PHP. Estoy tratando de encontrar la mejor convención para fomentar el fácil desarrollo y accesibilidad de las pruebas al revisar el código fuente. Estaría muy interesado en su experiencia/opinión con respecto a cada uno:¿Dónde pones tu prueba de unidad?
- Una carpeta para el código productiva, otro para las pruebas unitarias: Esto separa pruebas unitarias de los archivos lógicos del proyecto. Esta separación de es una molestia tanto como una ventaja: Alguien que busque en el código fuente del proyecto supondrá, por lo tanto, navegar por la implementación o las pruebas unitarias (o más comúnmente: la implementación solamente) La ventaja de que las pruebas unitarias sean otro punto de vista para sus clases se pierde; esos dos puntos de vista están demasiado separados IMO.
- métodos de prueba anotados: Cualquier moderno marco de pruebas de unidad Sé que permite a los desarrolladores crear métodos de ensayo dedicados, anotándolos (@test) y incrustarlos en el código del proyecto. El gran inconveniente que veo aquí es que los archivos del proyecto se abarrotan. Incluso si estos métodos se separan utilizando una cabecera de comentario (como pruebas unitarias por debajo de esta línea) sólo se hincha la clase innecesariamente.
- archivos de ensayo en las mismas carpetas que los archivos de implementación: Nuestra convención de nomenclatura de archivos dicta que los archivos PHP que contienen las clases (una clase por archivo) deben terminar con .class.php. Me imagino que poner las pruebas de la unidad con respecto a un archivo de clase en otra que termine en .test.php haría presentar las pruebas mucho más presentes a otros desarrolladores sin contaminar la clase. A pesar de que hincha las carpetas del proyecto, en lugar de los archivos de implementación , éste es mi favorito hasta ahora, pero tengo mis dudas: me pensaría que otros han llegado con esto ya, y descartado esta opción por alguna razón (es decir, I no he visto un proyecto Java con los archivos Foo.java y FooTest.java dentro de la misma carpeta.) Tal vez sea porque los desarrolladores de Java hacen un mayor uso de entornos de desarrollo que les permitan un acceso más fácil a las pruebas, mientras que en PHP sin grandes editores han emergido (como Eclipse para java ) - muchos desarrolladores lo saben usar vim/emacs o editores similares con poco soporte para el desarrollo de PHP per se.
¿Cuál es su experiencia con alguna de estas ubicaciones de prueba de unidad? ¿Tiene otra convención que no he enumerado aquí? ¿O estoy sobrevalorando la prueba de la unidad de accesibilidad a los revisores?