¿Dónde pones tu unidad de prueba?

He encontrado varias convenciones para las pruebas unitarias de limpieza en un proyecto y no estoy seguro de qué enfoque sería adecuado para nuestro próximo proyecto PHP. Estoy tratando de encontrar la mejor convención para fomentar el desarrollo fácil y la accesibilidad de las pruebas al revisar el código fuente. Estaría muy interesado en su experiencia / opinión con respecto a cada uno:

Una carpeta para código productivo, otra para pruebas unitarias: Esto separa las pruebas unitarias de los archivos lógicos del proyecto. Esta separación de preocupaciones es tanto una molestia como una ventaja: alguien que busque el código fuente del proyecto, así que supongo, examinará la implementación o las pruebas unitarias (o más comúnmente: solo la implementación). Se pierde la ventaja de que las pruebas unitarias son otro punto de vista para sus clases: esos dos puntos de vista están demasiado separados de la OMI.Métodos de prueba anotados: cualquier marco de prueba de unidad moderno que conozco permite a los desarrolladores crear métodos de prueba dedicados, anotándolos (@prueba) e incrustarlos en el código del proyecto. El gran inconveniente que veo aquí es que los archivos del proyecto se llenan. Incluso si estos métodos se separan usando un encabezado de comentario (comoPRUEBAS DE UNIDAD debajo de esta línea) simplemente hincha la clase innecesariamente.Pruebe los archivos dentro de las mismas carpetas que los archivos de implementación: nuestra convención de nomenclatura de archivos dicta que los archivos PHP que contienen clases (una clase por archivo) deben terminar con.class.php. Me imagino que poner pruebas unitarias con respecto a un archivo de clase en otro que termina en.test.php haría las pruebas mucho más presentes para otros desarrolladores sin contaminar la clase. Aunque hincha las carpetas del proyecto, en lugar de los archivos de implementación, este es mi favorito hasta ahora, pero tengo mis dudas: creo que otros ya se le ocurrió esto y descartó esta opción por alguna razón (es decir, no he visto un proyecto java con los archivosFoo.java yFooTest.java dentro de la misma carpeta.) Tal vez sea porque los desarrolladores de Java hacen un uso más intensivo de IDE que les permite un acceso más fácil a las pruebas, mientras que en PHP no han surgido grandes editores (como eclipse para java): muchos desarrolladores que conozco usan vim / emacs o similares editores con poco soporte para el desarrollo de PHP per se.

¿Cuál es su experiencia con cualquiera de estas ubicaciones de prueba de unidad? ¿Tienes otra convención que no he enumerado aquí? ¿O estoy sobrevalorando la accesibilidad de las pruebas unitarias a los revisores?

Respuestas a la pregunta(3)

Su respuesta a la pregunta