Ejecute pruebas para un módulo específico en Magento2

52

Ejecutar las pruebas de uso de Magento php bin/magento dev:tests:runlleva mucho tiempo.
¿Hay alguna manera de ejecutar las pruebas solo para un módulo específico?

Soy un novato en pruebas (de unidades), así que ten piedad.

Marius
fuente
¿Has intentado mirar lo que hace el comando? Quiero decir, en su código, tal vez se necesita otro argumento (o lista de).
Julien Lachal
1
@JulienLachal. Intenté eso. Solo acepta un argumento (tipo) que puede ser all, unit, integration, integration-all, static, static-all, integrity, legacy, default. Y algunas opciones generales como -h, -q, ...esa están disponibles para todos los comandos. Así que nada especial sobre ellos
Marius

Respuestas:

51

Magento 2 usa el marco phpunit para ejecutar la prueba. Puede ejecutar la prueba por tipo y módulo con el comando:

{phpunit_executable} -c {Magentoroot}/dev/test/{type}/phpunit.xml[.dist] path/to/module/test/dir

Por ejemplo:

  • para ejecutar la prueba unitaria para el catálogo , necesita ejecutar el comando

    vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magento/Catalog/Test/Unit/

  • para ejecutar la prueba de integración para el catálogo , debe ejecutar vendor/phpunit/phpunit/phpunit -c dev/tests/integration/phpunit.xml.dist dev/tests/integration/testsuite/Magento/Catalog

Actualmente, solo la prueba unitaria se ha movido a los módulos La prueba de integridad estática y de integración también funciona con todos los códigos de magento.

Kandy
fuente
Entonces, en términos generales, toda la prueba automatizada sigue siendo un desastre a pesar de que lanzaron oficialmente 2.0.0
peedee
@KAndy, he ejecutado la prueba de unidad del módulo de catálogo, pero cli muestra un error como este, Error fatal: Llamada a la función indefinida Magento \ Catalog \ Block \ Adminhtml \ Product \ Edit \ Action \ Attribute \ Tab __ () en / var / www / html / magento2 / vendor / magento / module-catalog / Block / Adminhtml / Product / Edi‌ t / Action / Attribute / Tab / Inventory.php en la línea 89. En el módulo central se muestran errores. ¿Cuál es la causa del error? por favor explícalo.
Rakesh Jesadiya
@RakeshJesadiya, parece que su archivo bootstrap no incluye app / functions.php donde se definió la función __ ()
KAndy
Sí, para mí no se ejecuta en absoluto en 2.0.2 cuando ejecuto "vendor / phpunit / phpunit / phpunit -c dev / tests / unit / phpunit.xml.dist app / code / Magento / Catalog / Test / Unit / "en el directorio raíz de magento me da" PHPUnit 4.1.0 de Sebastian Bergmann. No se puede abrir el archivo "app / code / Magento / Catalog / Test / Unit / .php". " ...
Lachezar Raychev
1
@LachezarRaychev Los códigos principales de Magento no están en la ruta de aplicación / código / Magento. Se trasladó a vendedor / magento. Por favor, intente este comandophp vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/
Franco
15

La respuesta de kandy parece ser el camino a seguir, pero mientras tanto encontré una manera rápida y sucia de hacerlo.

Copiar dev/tests/unit/phpunit.xml.dista dev/tests/unit/phpunit.xmly reemplazar

<directory suffix="Test.php">../../../app/code/*/*/Test/Unit</directory>

con

<directory suffix="Test.php">../../../app/code/[Namespace]/[Module]/Test/Unit</directory>  

y comentar las otras directoryetiquetas dentro de la <testsuite>etiqueta.

Cuando haya terminado, revierta sus cambios o elimínelos phpunit.xml.

Marius
fuente
hola marius, ¿cómo hacer una prueba unitaria usando cli para el módulo de catálogo? ¿Qué comando tenemos que ejecutar? ¿la ruta base es magento2 / bin?
Rakesh Jesadiya
Está en la respuesta de KAndy. vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magento/Catalog/Test/Unit/
Marius
1
@Rakesh :: intente con este comando actualizado. php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/Los códigos centrales de Magento se mueven a la ruta del proveedor / magento.
Franco
cómo ejecutar la prueba unitaria para el módulo personalizado utilizando: php vendor / phpunit / phpunit / phpunit -c dev / tests / unit / phpunit.xml.disvendor / magento / module-catalog /
Sushivam
@SachinS. Tal como lo describí. edite temporalmente el phpunit.xmlarchivo y coloque la ruta al módulo que desea probar.
Marius