Uruchom testy dla określonego modułu w Magento2

52

Przeprowadzenie testów używania Magento php bin/magento dev:tests:runzajmuje dużo czasu.
Czy istnieje sposób na uruchomienie testów tylko dla określonego modułu?

Jestem noobem w testach (jednostkowych), więc zmiłuj się.

Marius
źródło
Czy próbowałeś zobaczyć, co robi polecenie? Mam na myśli, że w swoim kodzie może potrzebować innego argumentu (lub listy).
Julien Lachal
1
@JulienLachal. Próbowałem tego. Akceptuje tylko jeden argument (typ), który może być all, unit, integration, integration-all, static, static-all, integrity, legacy, default. Niektóre ogólne opcje -h, -q, ...są dostępne dla wszystkich poleceń. Więc nie ma w nich nic specjalnego
Marius

Odpowiedzi:

51

Magento 2 używa środowiska phpunit do uruchamiania testu. Możesz uruchomić test według typu i modułu za pomocą polecenia:

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

Na przykład:

  • aby uruchomić test jednostkowy dla katalogu , musisz uruchomić polecenie

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

  • aby uruchomić test integracji dla katalogu , musisz uruchomić vendor/phpunit/phpunit/phpunit -c dev/tests/integration/phpunit.xml.dist dev/tests/integration/testsuite/Magento/Catalog

Obecnie tylko testy jednostkowe zostały przeniesione do modułów. Również test integralności statycznej i integralności działa z całym kodem magento.

KAndy
źródło
Ogólnie rzecz biorąc, cały automatyczny test wciąż jest bałaganem, mimo że oficjalnie wydali 2.0.0?
peedee
@KAndy, uruchomiłem test modułu modułu katalogu, ale cli wyświetla taki błąd, błąd krytyczny: wywołanie niezdefiniowanej funkcji Magento \ Catalog \ Block \ Adminhtml \ Product \ Edit \ Action \ Attribute \ Tab __ () w / var / www / html / magento2 / vendor / magento / module-catalogue / Block / Adminhtml / Product / Edi‌ t / Action / Attribute / Tab / Inventory.php on line 89. W module głównym wyświetlany jest błąd modułu. co jest przyczyną błędu. proszę wyjaśnij to.
Rakesh Jesadiya
@RakeshJesadiya, wygląda na to, że plik bootstrap nie zawiera app / functions.php, gdzie zdefiniowano funkcję __ ()
KAndy
Tak .. dla mnie w ogóle nie działa na 2.0.2, kiedy uruchamiam "vendor / phpunit / phpunit / phpunit -c dev / test / unit / phpunit.xml.dist app / code / Magento / Catalog / Test / Unit / ”w katalogu głównym magento daje mi„ PHPUnit 4.1.0 autorstwa Sebastiana Bergmanna. Nie można otworzyć pliku ”app / code / Magento / Catalog / Test / Unit / .php”. ” ...
Lachezar Raychev
1
@LachezarRaychev Podstawowe kody Magento nie znajdują się w ścieżce app / code / Magento. Został przeniesiony do dostawcy / magento. Spróbuj tego poleceniaphp vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/
Franc
15

Odpowiedź Kandy'ego wygląda jak droga, ale w międzyczasie znalazłem szybki i brudny sposób na zrobienie tego.

Skopiować dev/tests/unit/phpunit.xml.distdo dev/tests/unit/phpunit.xmli zastąpić

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

z

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

i komentuj pozostałe directorytagi wewnątrz <testsuite>tagu.

Po zakończeniu przywróć zmiany lub usuń je phpunit.xml.

Marius
źródło
witaj marius, jak wykonać test jednostkowy przy użyciu cli dla modułu katalogu? Które polecenie musimy uruchomić? Ścieżka podstawowa to magento2 / bin?
Rakesh Jesadiya,
Jest w odpowiedzi KAndy. vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magento/Catalog/Test/Unit/
Marius
1
@Rakesh :: spróbuj tego zaktualizowanego polecenia. php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/Główne kody Magento zostały przeniesione na ścieżkę sprzedawca / magento.
Frank
jak uruchomić test jednostkowy dla niestandardowego modułu za pomocą: php vendor / phpunit / phpunit / phpunit -c dev / test / unit / phpunit.xml.disvendor / magento / module-catalogue
Sushivam
@SachinS. Tak jak opisałem. tymczasowo edytuj phpunit.xmlplik i umieść ścieżkę do modułu, który chcesz przetestować.
Marius