对Magento2中的特定模块运行测试


52

运行Magento的测试要php bin/magento dev:tests:run花费很多时间。
有没有一种方法可以仅针对特定模块运行测试?

我是(单元)测试中的菜鸟,请多加注意。


您是否尝试过查看命令的作用?我的意思是,在其代码中,也许需要另一个参数(或清单)。
朱利安·拉查

1
@JulienLachal。试过了。它仅接受可以为的一个参数(类型)all, unit, integration, integration-all, static, static-all, integrity, legacy, default。诸如此类的一些常规选项-h, -q, ...可用于所有命令。所以他们没什么特别的
马吕斯

Answers:


51

Magento 2使用phpunit框架进行测试。您可以使用以下命令针对每种类型和模块运行测试:

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

例如:

  • 要运行Catalog的单元测试,需要运行命令

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

  • 要运行Catalog的集成测试,您需要运行 vendor/phpunit/phpunit/phpunit -c dev/tests/integration/phpunit.xml.dist dev/tests/integration/testsuite/Magento/Catalog

当前,只有单元测试移至模块。静态和集成完整性测试也适用于所有magento代码。


因此,总的来说,即使正式发布了2.0.0,整个自动化测试还是一团糟?
撒尿2015年

@KAndy,我已经运行了目录模块单元测试,但是cli显示这样的错误,致命错误:调用/ var / www /中未定义的函数Magento \ Catalog \ Block \ Adminhtml \ Product \ Edit \ Action \ Attribute \ Tab __()第89行上的html / magento2 / vendor / magento / module-catalog / Block / Adminhtml / Product / Edi‌t / Action / Attribute / Tab / Inventory.php。在核心模块中显示错误。这是错误的原因。请解释。
Rakesh Jesadiya 2015年

@RakeshJesadiya,看来您的引导程序文件不包含其中定义了函数__()的app / functions.php
KAndy 2015年

是的..对我来说,当我运行“ vendor / phpunit / phpunit / phpunit -c dev / tests / unit / phpunit.xml.dist app / code / Magento / Catalog / Test / Unit时,它根本不在2.0.2上运行/”在magento根目录中,它给我“ Sebastian Bergmann的PHPUnit 4.1.0。无法打开文件“ app / code / Magento / Catalog / Test / Unit / .php”。” ...
Lachezar Raychev '02

1
@LachezarRaychev Magento核心代码不在app / code / Magento路径中。它已移至供应商/ magento。请尝试执行此命令php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist vendor/magento/module-catalog/
Franc

15

康提的答案就像是要走的路,但与此同时,我发现了一种快速而肮脏的方法。

复制dev/tests/unit/phpunit.xml.distdev/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对目录模块进行单元测试?我们必须运行哪个命令?基本路径是magento2 / bin?
Rakesh Jesadiya 2015年

这是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 vendor / phpunit / phpunit / phpunit -c dev / tests / unit / phpunit.xml.disvendor / magento / module-catalog /
Sushivam

@SachinS。正如我所描述的。临时编辑phpunit.xml文件,然后将路径放入要测试的模块。
Marius

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.