Jalankan tes untuk modul tertentu di Magento2

52

Menjalankan tes untuk menggunakan Magento php bin/magento dev:tests:runmembutuhkan banyak waktu.
Apakah ada cara untuk menjalankan tes hanya untuk modul tertentu?

Saya seorang pemula dalam (unit) pengujian jadi kasihanilah.

Marius
sumber
Sudahkah Anda mencoba melihat apa yang dilakukan perintah? Maksud saya, dalam kodenya, mungkin dibutuhkan argumen lain (atau daftar).
Julien Lachal
1
@JulienLachal. Sudah mencobanya. Itu hanya menerima satu argumen (tipe) yang bisa all, unit, integration, integration-all, static, static-all, integrity, legacy, default. Dan beberapa opsi umum seperti -h, -q, ...itu tersedia untuk semua perintah. Jadi tidak ada yang istimewa dari mereka
Marius

Jawaban:

51

Magento 2 menggunakan kerangka kerja phpunit untuk menjalankan tes. Anda dapat menjalankan tes per jenis dan modul dengan perintah:

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

Sebagai contoh:

  • untuk menjalankan tes unit untuk Katalog , Anda perlu menjalankan perintah

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

  • untuk menjalankan tes integrasi untuk Katalog , Anda perlu menjalankan vendor/phpunit/phpunit/phpunit -c dev/tests/integration/phpunit.xml.dist dev/tests/integration/testsuite/Magento/Catalog

Saat ini hanya unit test yang dipindahkan ke modul. Tes integritas statis dan integrasi juga bekerja dengan semua kode magento.

KAndy
sumber
Jadi secara umum seluruh pengujian otomatis masih berantakan meskipun mereka secara resmi merilis 2.0.0?
pipi
@KAndy, saya sudah menjalankan katalog modul unit test, tetapi cli menampilkan kesalahan seperti ini, Kesalahan fatal: Panggilan ke fungsi yang tidak ditentukan Magento \ Catalog \ Block \ Adminhtml \ Product \ Edit \ Action \ Attribute \ Tab __ () di / var / www / html / magento2 / vendor / magento / modul-katalog / Blok / Adminhtml / Produk / Pendidikan / Tindakan / Atribut / Tab / Inventory.php on line 89. Pada modul inti kesalahan ditampilkan. Apa penyebab kesalahan. tolong jelaskan.
Rakesh Jesadiya
@RakeshJesadiya, sepertinya file bootstrap Anda tidak menyertakan app / functions.php di mana fungsi __ () didefinisikan
KAndy
Ya .. bagi saya itu tidak berjalan sama sekali pada 2.0.2 ketika saya menjalankan "vendor / phpunit / phpunit / phpunit -c dev / tes / unit / aplikasi phpunit.xml.dist / kode / Magento / Katalog / Test / Unit / "dalam direktori root magento ini memberi saya" PHPUnit 4.1.0 oleh Sebastian Bergmann. Tidak dapat membuka file "app / code / Magento / Catalog / Test / Unit / .php". " ...
Lachezar Raychev
1
@LachezarRaychev Kode inti Magento tidak ada di jalur app / code / Magento. Pindah ke vendor / magento. Silakan coba perintah iniphp vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/
Franc
15

Jawaban kandy terlihat seperti cara untuk pergi, tetapi sementara itu saya menemukan cara cepat dan kotor untuk melakukannya.

Salin dev/tests/unit/phpunit.xml.distke dev/tests/unit/phpunit.xmldan ganti

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

dengan

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

dan komentar directorytag lain di dalam <testsuite>tag.

Setelah selesai, kembalikan perubahan Anda atau hapus phpunit.xml.

Marius
sumber
halo marius, bagaimana cara melakukan tes unit menggunakan modul CLI untuk katalog? perintah mana yang harus kita jalankan? path dasar adalah magento2 / bin?
Rakesh Jesadiya
Ada dalam jawaban dari KAndy. vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magento/Catalog/Test/Unit/
Marius
1
@Rakesh :: silakan coba perintah yang diperbarui ini. php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/Kode inti Magento dipindahkan ke jalur vendor / magento.
Franc
cara menjalankan unit test untuk modul khusus menggunakan: vendor php / phpunit / phpunit / phpunit -c dev / tes / unit / phpunit.xml.disvendor / magento / module-catalog /
Sushivam
@SachinS. Seperti yang saya jelaskan. edit sementara phpunit.xmlfile dan letakkan path ke modul yang ingin Anda uji.
Marius
2

hanya untuk menambahkan bahwa dengan menggunakan IDE Phpstorm Anda dapat menentukan konfigurasi Tes untuk modul Anda dan menjalankannya secara terpisah. Menjalankan Tes di PhpStorm

Amin Memariani
sumber