我与Zend框架2的工作,我想在PhpStorm 5.0.4运行我所有的单元测试。 我有PhpStorm建立以检查测试myproject/module
,它成功地找到我的测试。 问题是,它不读取每个模块,这是需要(它指向一个引导文件)内我的配置文件。
下面是一个模块(目录结构源 ):
/module
/User
/tests
/UserTest
/Model
/UserTest.php
Bootstrap.php
phpunit.xml.dist
TestConfig.php.dist
当我运行测试,它给了我一个错误,因为Bootstrap.php
没有在运行之前运行UserTest.php
。 所有的文件都是正确的,因为如果我cd
到/myproject/module/User/tests/
并运行phpunit
终端内,它工作正常。
我想它在每一模块内使用的配置(并由此自举)。 我试图用--configuration
选择使用相对路径,但我无法得到它的工作。
这是我目前的配置:
关于如何可以运行该配置文件(和自举)当一个模块被测试任何指针? 也就是说,一个模块都有自己的配置文件和引导。
提前致谢。
PHP风暴7假定你将只需要一个默认的启动文件,因此不直接使各个bootsrap文件每个PHPUnit的测试配置。
然而,ZF2进行对每个模块为基础的测试。 因此,你设置的默认值至第一个模块后,其他模块不能正常工作。 解决这个问题的办法是
在文件中删除默认选项|设置| PHP | PHPUnit的您不必删除默认的配置文件,但是你必须空出,并取消默认的引导文件。 只是取消选中是不够的
去运行,|编辑配置(还有其他的快捷键,此框)为您必须创建一个测试配置中的每个模块。 例如,你也会有专门的标准应用模块,因此“应用程序模块测试”吧,也许一个管理模块,然后在“管理模块测试”
对于每个测试(假设标准ZF2目录结构)
一个。 测试范围:目录湾 目录:C:\瓦帕\ WWW \ PROJECT-NAME \模块\ MODULE-NAME \试验C。 勾选“使用可选的配置文件:” d。 输入C:\瓦帕\ WWW \ PROJECT-NAME \模块\ MODULE-NAME \测试\ MODULE-NAMETest \ phpunit.xml.dist即 在 “测试运行选项”,进入 “--bootstrap C:\ WAMP \ WWW \ PROJECT-NAME \模块\ MODULE-NAME \测试\ MODULE-NAMETest \ bootstrap.php中”
- 重复下一个模块
这里的问题是,只要默认bootsrap领域有一个条目,phpstorm将添加默认的--bootstrap选项你把在任何情况下的具体测试运行选项之后。 所以,不管你做什么,你最终跑错引导文件每次除了第一/默认测试用例
希望这可以帮助
除非我错过了一些东西,你必须设置每个模块的测试配置。 你的情况,你的myproject。 相反,你会希望每个模块一个,然后设置为每个(使用可选的配置文件)的配置。
我利用在运行配置环境变量选项定义值我可以使用全局的bootstrap.php内特定于应用程序的特定模块或部分需求拉动的。
class GlobalBootstrap
{
private static $applicationSections = [
'section_a',
'section_b',
'section_c'
];
public static function init()
{
$localMethod = self::fetchLocalMethod();
if (!is_null($localMethod)) {
self::$localMethod();
} else {
throw new Exception(
__CLASS__
. '::'
. __FUNCTION__
. 'Says: No local method has been defined for this test section'
);
}
}
private static function fetchLocalMethod()
{
$section = getenv('APPLICATION_SECTION');
if (is_null($section) || !in_array($section, self::$applicationSections)) {
return null;
}
$section = preg_replace("/[^a-zA-Z]+/", "", $section);
$method = 'bootstrap' . ucfirst(strtolower($section));
return $method;
}
/**
* Section specific methods
*/
protected static function bootstrapSectiona()
{
require __DIR__ . '/../../{section_a}/module/Test/Bootstrap.php';
}
}
GlobalBootstrap::init();
一任意变量和值可以被创建,然后使用在bootstrap.php中引用:getevn(VARIABLE_NAME); 这样可以节省很多PHPStorm冗长的配置,但culd可能同样获得尽可能复杂,如果你依赖于很多不同的引导功能。