Realmente nunca escribo ninguna prueba porque generalmente tengo que trabajar con presupuestos bajos. Así que normalmente solo borro los archivos de demostración. Sin embargo, noté que el directorio de prueba se movió de /src/MyBundle/Test en Symfony 2 a /tests en Symfony 3 y me pregunto por qué.
Los paquetes son, o al menos pensé que lo son, componentes potencialmente "descomponibles" en una aplicación. Esto significa que siempre es posible ejecutar/trabajar con el mismo paquete en otro "tiempo de ejecución" de Symfony con poco o ningún esfuerzo.
Por lo tanto, mover el directorio de pruebas de su paquete relacionado al directorio raíz no tiene ningún sentido para mí. Hacer que una pieza independiente de software sea dependiente/incompleta sin motivo alguno. De hecho, me hace sentir que no entendí completamente el concepto de paquetes en Symfony.
También noté que los tutoriales de Symfony comenzaron hace unos años para obligar a sus usuarios a mover sus plantillas a /app/Resources. Cuando lo aprendí, tenían las plantillas en sus paquetes relacionados, lo que me parece mucho más limpio. ¿Por qué debería mover algo afuera si ya tengo todo incluido (!) en un solo directorio. Tal vez tenga algunos problemas con la traducción, pero en alemán, un "paquete" es 1 sola unidad. Si divides un paquete, obtienes 2, pero no la mitad.
Por lo general, veo Symfony como un tiempo de ejecución configurado para mis paquetes, por lo que no toco nada fuera de /src además de composer.json, AppKernel o archivos de configuración.
Bueno, puedo admitir que el paquete puede reaccionar de manera diferente según su entorno, pero las pruebas unitarias ni siquiera deberían depender del contexto si las hice bien.
Incluso si ve el AppBundle como uno especial relacionado con el contexto, sigue siendo un estilo de desarrollo inconsistente cuando algunos archivos se pueden encontrar allí, mientras que otros se pueden encontrar en un lugar completamente diferente. Al menos el AppBundle no debería ser un paquete entonces.
Pruebas
Creo que este cambio se realizó solo para sacar las pruebas de la carpeta src real. Es una especie de mejor práctica en otros lenguajes de programación como JAVA, porque las pruebas no son parte de su código fuente real. Las pruebas tampoco se incluyen en el artefacto final (tome composer.phar como ejemplo) para minimizar su tamaño.
La estructura del directorio de prueba se compone de directorios de paquetes con sus pruebas relacionadas, por lo que todavía tiene pruebas separadas para paquetes:
pruebas/ ├── AppBundle/ │ ├── Entidad │ │ └── PruebaUsuario.php │ ├── Servicio │ ├── Otro │ └── Etc. ├── Otro Paquete/ │ ├── Controlador │ └── Entidad └── EtcBundle/
Plantillas
En lo que respecta a las plantillas, es mucho más fácil para los diseñadores encontrar todas las plantillas necesarias cuando se encuentran en un solo directorio.
De todos modos, esos son mis dos centavos.
Si revisa los archivos composer.json, podría ver que el directorio Pruebas se carga (automáticamente) solo para el entorno de desarrollo, por lo que en un sistema de producción no tiene estos archivos cargados también. Como ejemplo:
"autoload": { "psr-4": { "": "src/" }, "files": [ "app/AppKernel.php" ] }, "autoload-dev": { "psr-4": { "Tests\\": "tests/" } },Esto acelerará la carga automática en su aplicación.
Espero que esto ayude
Es porque en Symfony 3 hay una separación entre paquetes de aplicaciones y paquetes reutilizables:
Hay dos tipos de paquetes:
- Paquetes específicos de la aplicación: solo se utilizan para compilar su aplicación;
- Paquetes reutilizables: destinados a ser compartidos entre muchos proyectos.
Este artículo trata sobre cómo estructurar sus paquetes reutilizables para que sean fáciles de configurar y ampliar. Muchas de estas recomendaciones no se aplican a los paquetes de aplicaciones porque querrá que sean lo más simples posible.
Puedes obtener más información en las mejores prácticas de paquetes en Symfony .