Запустите тесты для определенного модуля в Magento2

52

Выполнение тестов Magento для использования php bin/magento dev:tests:runзанимает много времени.
Есть ли способ запустить тесты только для определенного модуля?

Я нуб в (юнит) тестировании, так что помилуй.

Мариус
источник
Вы пытались посмотреть, что делает команда? Я имею в виду, в своем коде, возможно, он принимает другой аргумент (или список).
Жюльен Лахаль
1
@JulienLachal. Попробовал это. Он принимает только один аргумент (тип), который может быть all, unit, integration, integration-all, static, static-all, integrity, legacy, default. И некоторые общие параметры, подобные -h, -q, ...этому, доступны для всех команд. Так что ничего особенного в них нет
Мариус

Ответы:

51

Magento 2 использует phpunit framework для запуска теста. Вы можете запустить тест для каждого типа и модуля с помощью команды:

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

Например:

  • чтобы запустить модульный тест для каталога , вам нужно запустить команду

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

  • чтобы запустить интеграционный тест для каталога , вам нужно запустить vendor/phpunit/phpunit/phpunit -c dev/tests/integration/phpunit.xml.dist dev/tests/integration/testsuite/Magento/Catalog

В настоящее время только модульное тестирование перенесено в модули. Также статический и интеграционный тест целостности работает со всем magento-кодом.

Канди
источник
Так что, вообще говоря, все автоматизированное тестирование все еще беспорядок, даже если они официально выпустили 2.0.0?
peedee
@ Kandy, я запустил модульное тестирование модуля каталога, но cli выдает такую ​​ошибку, Fatal error: вызов неопределенной функции Magento \ Catalogue \ Block \ Adminhtml \ Product \ Edit \ Action \ Attribute \ Tab __ () в / var / www / html / magento2 / vendor / magento / module-catalog / Block / Adminhtml / Product / Edi‌ / Action / Attribute / Tab / Inventory.php в строке 89. В основном модуле отображаются ошибки. Что является причиной ошибки. Пожалуйста, объясните это.
Ракеш Джесадия
@RakeshJesadiya, похоже, ваш файл начальной загрузки не содержит app / functions.php, где определена функция __ ()
KAndy
Да .. для меня это не работает вообще на 2.0.2, когда я запускаю "vendor / phpunit / phpunit / phpunit -c dev / tests / unit / phpunit.xml.dist app / code / Magento / Каталог / Test / Unit / "в корневом каталоге magento он дает мне" PHPUnit 4.1.0 от Себастьяна Бергманна. Не удается открыть файл "app / code / Magento / Каталог / Test / Unit / .php". " ...
Лачезар Райчев
1
@LachezarRaychev Коды ядра Magento отсутствуют в пути app / code / Magento. Его перевели вендор / мадженто. Пожалуйста, попробуйте эту командуphp vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/
Франк
15

Ответ Канди выглядит как путь, но в то же время я нашел быстрый и грязный способ сделать это.

Копировать dev/tests/unit/phpunit.xml.distв dev/tests/unit/phpunit.xmlи заменить

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

с участием

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

и закомментируйте другие directoryтеги внутри <testsuite>тега.

Когда вы закончите, отмените ваши изменения или удалите phpunit.xml.

Мариус
источник
Привет, Мариус, как выполнить модульное тестирование, используя cli для модуля каталога? Какую команду мы должны запустить? Базовый путь - magento2 / bin?
Ракеш Джесадия
Это в ответе от Канди. vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magento/Catalog/Test/Unit/
Мариус
1
@Rakesh :: пожалуйста, попробуйте эту обновленную команду. php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/Основные коды Magento перемещены в путь продавца / magento.
Франк
Как запустить модульное тестирование для пользовательского модуля, используя: php vendor / phpunit / phpunit / phpunit -c dev / tests / unit / phpunit.xml.disvendor / magento / module-catalog / /
Сушивам
@SachinS. Как я и описал. временно отредактируйте phpunit.xmlфайл и укажите путь к модулю, который вы хотите протестировать.
Мариус
2

просто добавьте, что с помощью Phpstorm IDE вы можете определить конфигурацию теста для вашего модуля и запустить его отдельно. Запуск тестов в PhpStorm

Амин Мемариани
источник