Zend framework $\u服务器[';ZEND\u PHPUNIT\u测试位置';]未在ZEND Studio中正确设置

Zend framework $\u服务器[';ZEND\u PHPUNIT\u测试位置';]未在ZEND Studio中正确设置,zend-framework,phpunit,zend-studio,Zend Framework,Phpunit,Zend Studio,上周我在Zend Studio中设置了单元测试,它工作得很好。。直到重构之后,我突然发现一个错误,ZendPHPUnit.php中找不到以下文件: /var/folders/Td/Tdnh++2KEdWAsk8Y0O4N0k+++TI/-Tmp-/zend.phpunit.UserMapperTest.php.2428213892936827201.php 文件路径存储在ZendPHPUnit.php中的$\u服务器['ZEND\u PHPUNIT\u TESTS\u LOCATION']中

上周我在Zend Studio中设置了单元测试,它工作得很好。。直到重构之后,我突然发现一个错误,ZendPHPUnit.php中找不到以下文件:

/var/folders/Td/Tdnh++2KEdWAsk8Y0O4N0k+++TI/-Tmp-/zend.phpunit.UserMapperTest.php.2428213892936827201.php 
文件路径存储在ZendPHPUnit.php中的$\u服务器['ZEND\u PHPUNIT\u TESTS\u LOCATION']中

我检查了文件夹,发现 zend.phpunit.UserrMapperTest.php.6031927106542896607.php(数字不同)

我有点绝望,所以我通过强迫

$_SERVER['ZEND_PHPUNIT_TESTS_LOCATION'] = '/var/folders/Td/Tdnh++2KEdWAsk8Y0O4N0k+++TI/-Tmp-/zend.phpunit.UserMapperTest.php.6031927106542896607.php';
最终,在我处理了其他几个测试用例之后,问题自行解决了。现在,我再次重构了一些代码,问题又出现了。我的测试用例都不起作用

重新启动comp没有帮助,Project->Clean没有帮助。我在mac上运行雪豹

对造成这种情况的原因有什么见解吗


谢谢

问题在于,PHPUnit不处理文件本身,而是处理动态创建的文件副本,并存储在动态创建的目录中。这些文件被修改为包含PHPUnit逻辑。这适用于测试文件本身以及php.ini(这迫使您在测试的主php.ini文件中加载扩展名,因为会忽略其他.ini文件)。每次运行测试时,将使用新的唯一名称(原始名称加唯一标识符)重新创建这些文件

我发现解决此问题的最佳方法是为测试创建启动配置,并将它们另存为项目中的.launch文件(右键单击->运行方式->创建新的PHPUnit配置->在公共选项卡中选择“共享文件”)。完成启动配置后,只需打开编辑器并单击“运行”按钮即可运行此操作。您将看到,每次运行它们之后,在每个已更改的启动文件上都会出现一行,如下所示(很容易看出配置是否处于版本控制中):


我通常只是将此更改与我当时正在进行的任何其他更改一起提交


文件更改以及启动配置仍然有点烦人,但至少通过这种方式,您的测试将始终运行,您不必担心必须手动重新运行,或清理项目,或诸如此类的事情。

因此,我在“公用”选项卡(另存为下)中找到了“共享文件”。另一个选项是“本地”)。我应该将共享文件设置为什么?我公司的某个虚拟文件每次都不会改变?谢谢你的详细解释!我建议在您的项目中创建一个名为“launchers”的文件夹,并将启动配置存储在那里。通过这种方式,它们可以与项目的其余部分一起进行版本控制,并且可以被项目中的每个人使用。您可以为文件指定任何名称,但扩展名应为“.launch”。您必须先创建实际的.launch文件(空白),然后再将启动配置存储在那里(EclipseQuirk)。
<mapEntry key="ZEND_PHPUNIT_TESTS_LOCATION" value="/var/folders/my/ph9spb0s45z5_11l9tqw256r0000gn/T/DefaultWorkspace.phpunit.AssignmentRequestControllerDateCriteriaTest.php.4951739174960507380.php"/>