เรียกใช้การทดสอบสำหรับโมดูลเฉพาะใน Magento2


52

การทำแบบทดสอบเพื่อวีโอไอพีเพื่อใช้นั้นphp bin/magento dev:tests:runใช้เวลานานมาก
มีวิธีเรียกใช้การทดสอบสำหรับโมดูลเฉพาะเท่านั้นหรือไม่

ฉันเป็นคนที่ไม่มีการทดสอบ (หน่วย) ดังนั้นจึงมีความเมตตา


คุณลองดูที่คำสั่งแล้วหรือยัง? ฉันหมายถึงในรหัสของมันอาจจะใช้อาร์กิวเมนต์อื่น (หรือรายการ)
Julien Lachal

1
@JulienLachal พยายามอย่างนั้น ยอมรับเพียงหนึ่งอาร์กิวเมนต์ (ประเภท) ที่สามารถเป็นall, unit, integration, integration-all, static, static-all, integrity, legacy, defaultได้ และตัวเลือกทั่วไปบางอย่างเช่น-h, -q, ...นั้นมีให้สำหรับทุกคำสั่ง ดังนั้นไม่มีอะไรพิเศษเกี่ยวกับพวกเขา
Marius

คำตอบ:


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

ขณะนี้การทดสอบหน่วยเท่านั้นที่ย้ายไปยังโมดูล นอกจากนี้การทดสอบความสมบูรณ์ของการใช้งานร่วมกับแบบสแตติกและแบบอินเทอร์แอคทีฟนั้นทำงานร่วมกับรหัสวีโอไอพีทั้งหมด


ดังนั้นโดยทั่วไปแล้วการทดสอบอัตโนมัติทั้งหมดยังคงเป็นระเบียบแม้ว่าพวกเขาจะเปิดตัว 2.0.0 อย่างเป็นทางการแล้วหรือยัง
peedee

@KAndy ฉันได้เรียกใช้การทดสอบหน่วยโมดูลแคตตาล็อก แต่ cli แสดงข้อผิดพลาดเช่นนี้ข้อผิดพลาดร้ายแรง: การเรียกไปยังฟังก์ชันที่ไม่ได้กำหนด Magento \ Catalog \ Block \ Adminhtml \ Product \ Edit \ Action \ Attribute \ Tab __ () ใน / var / www / html / magento2 / ผู้ขาย / magento / โมดูลแคตตาล็อก / บล็อก / ผู้ดูแลระบบ / ผลิตภัณฑ์ / Edi Actiont / การกระทำ / คุณสมบัติ / แท็บ / Inventory.php ในบรรทัดที่ 89 ในข้อผิดพลาดโมดูลหลักคือ display.what เป็นสาเหตุของข้อผิดพลาด ได้โปรดอธิบาย
Rakesh Jesadiya

@RakeshJesadiya ดูเหมือนว่าไฟล์บูตสแตรปของคุณไม่รวมแอพ / functions.php โดยที่ฟังก์ชัน __ () กำหนดไว้
KAndy

ใช่ .. สำหรับฉันมันไม่ทำงานเลยใน 2.0.2 เมื่อฉันรัน "ผู้ขาย / phpunit / phpunit / phpunit -c dev / การทดสอบ / หน่วย / phpunit.xml.dist แอป / รหัส / วีโอไอพี / แคตตาล็อก / ทดสอบ / หน่วย / "ในไดเรกทอรีรากของวีโอไอพีให้ฉัน" PHPUnit 4.1.0 โดย Sebastian Bergmann ไม่สามารถเปิดไฟล์ "แอป / รหัส / Magento / แคตตาล็อก / ทดสอบ / หน่วย / .php" ...
Lachezar Raychev

1
@LachezarRaychev รหัสหลักของวีโอไอพีไม่ได้อยู่ในแอพ / รหัส / เส้นทางวีโอไอพี มันย้ายไปยังผู้ขาย / วีโอไอพี โปรดลองคำสั่งนี้php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/
Franc

15

คำตอบของ Kandy นั้นตะเข็บเหมือนหนทาง แต่ในเวลานั้นฉันพบวิธีที่รวดเร็วและสกปรกในการทำเช่นนั้น

คัดลอก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เมื่อคุณทำยกเลิกการเปลี่ยนแปลงหรือลบ


สวัสดี marius จะทำการทดสอบหน่วยโดยใช้ cli สำหรับโมดูลแคตตาล็อกได้อย่างไรคำสั่งใดที่เราต้องใช้? base path คือ magento2 / bin
Rakesh Jesadiya

มันอยู่ในคำตอบจาก KAndy vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Magento/Catalog/Test/Unit/
Marius

1
@Rakesh :: โปรดลองใช้คำสั่งที่อัปเดตนี้ php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/รหัสหลักของ Magento ถูกย้ายไปยังเส้นทางผู้ขาย / magento
ฟรังก์

วิธีการเรียกใช้การทดสอบหน่วยสำหรับโมดูลที่กำหนดเองโดยใช้: ผู้ขาย php / phpunit / phpunit / phpunit -c dev / การทดสอบ / หน่วย / phpunit.xml.disvendor / magento / module-catalog /
Sushivam

@SachinS เช่นเดียวกับที่ฉันอธิบาย แก้ไขphpunit.xmlไฟล์ชั่วคราวและใส่พา ธ ไปยังโมดูลที่คุณต้องการทดสอบ
Marius

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.