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.

Marius
fonte
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.

KAndy
fonte
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.

Marius
fonte
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
2

apenas para adicionar que, usando o Phpstorm IDE, você pode definir a configuração de teste para o seu módulo e executá-la separadamente. Executando testes no PhpStorm

Amin Memariani
fonte