Execute testes para um módulo específico no Magento2


52

A execução dos testes para usar o Magento php bin/magento dev:tests:runleva muito tempo.
Existe uma maneira de executar os testes apenas para um módulo específico?

Eu sou um novato em testes (unitários), então tenha piedade.


Você já tentou ver o que o comando faz? Quero dizer, em seu código, talvez seja necessário outro argumento (ou lista de).
Julien Lachal

11
@JulienLachal. Tentei isso. Ele aceita apenas um argumento (tipo) que pode ser all, unit, integration, integration-all, static, static-all, integrity, legacy, default. E algumas opções gerais como -h, -q, ...essa estão disponíveis para todos os comandos. Portanto, nada de especial sobre eles
Marius

Respostas:


51

O Magento 2 usa a estrutura phpunit para executar o teste. Você pode executar o teste por tipo e módulo com o comando:

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

Por exemplo:

  • para executar o teste de unidade do Catalog , você precisa executar o comando

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

  • para executar o teste de integração do Catalog , você precisa executar vendor/phpunit/phpunit/phpunit -c dev/tests/integration/phpunit.xml.dist dev/tests/integration/testsuite/Magento/Catalog

Atualmente, apenas o teste de unidade foi movido para os módulos. Também o teste de integridade estática e de integração está funcionando com todo o código magento.


Então, de um modo geral, todo o teste automatizado ainda é uma bagunça, apesar de terem lançado oficialmente o 2.0.0?
Peedee

@KAndy, eu executei o teste de unidade de módulo de catálogo, mas o cli exibe um erro como este, Erro fatal: Chame a função indefinida Magento \ Catalog \ Block \ Adminhtml \ Product \ Edit \ Action \ Attribute \ Tab __ () em / var / www / html / magento2 / vendor / magento / catalog-module / Block / Adminhtml / Product / Edit / Action / Attribute / Tab / Inventory.php na linha 89. No módulo principal, os erros são exibidos. Qual é a causa do erro? Por favor, explique.
Rakesh Jesadiya

@RakeshJesadiya, parece que seu arquivo de inicialização não inclui app / functions.php em que a função __ () foi definida
KAndy

Sim .. para mim, ele não está sendo executado no 2.0.2 quando executo "fornecedor / phpunit / phpunit / phpunit -c dev / tests / unit / phpunit.xml.dist app / code / Magento / Catalog / Test / Unit / "no diretório raiz do magento, ele me fornece" PHPUnit 4.1.0 por Sebastian Bergmann. Não é possível abrir o arquivo "app / code / Magento / Catalog / Test / Unit / .php". " ...
Lachezar Raychev

11
@LachezarRaychev Os códigos principais do Magento não estão no caminho app / code / Magento. Foi movido para fornecedor / magento. Por favor, tente este comandophp vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/
Franc

15

A resposta de Kandy parece certa, mas nesse meio tempo eu encontrei uma maneira rápida e suja de fazê-lo.

Copiar dev/tests/unit/phpunit.xml.distpara dev/tests/unit/phpunit.xmle substituir

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

com

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

e comente as outras directorytags dentro da <testsuite>tag.

Quando terminar, reverta suas alterações ou remova phpunit.xml.


olá marius, como fazer o teste de unidade usando cli para o módulo de catálogo? qual comando temos que executar? caminho base é magento2 / bin?
Rakesh Jesadiya

Está na resposta de KAndy. vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magento/Catalog/Test/Unit/
Marius

11
@Rakesh :: tente este comando atualizado. php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/Os códigos principais do Magento são movidos para o caminho do fornecedor / magento.
21316 Franc

como executar o teste de unidade para módulo personalizado usando: php fornecedor / phpunit / phpunit / phpunit -c dev / testes / unidade / phpunit.xml.disvendor / magento / module-catálogo /
Sushivam

@SachinS. Assim como eu descrevi. edite temporariamente o phpunit.xmlarquivo e coloque o caminho para o módulo que você deseja testar.
Marius

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.