我上周在Zend Studio中设置了单元测试,它工作正常......直到经过一些重构之后,我得到一个错误,即在ZendPHPUnit.php中找不到以下文件:
/var/folders/Td/Tdnh++2KEdWAsk8Y0O4N0k+++TI/-Tmp-/zend.phpunit.UserMapperTest.php.2428213892936827201.php
文件路径存储在ZendPHPUnit.php的$ _SERVER ['ZEND_PHPUNIT_TESTS_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 - >干净没有帮助。我在运行Snow Leopard的Mac上。
有关导致此问题的任何见解?
谢谢!
答案 0 :(得分:1)
问题在于PHPUnit不能与文件本身一起使用,而是使用动态创建的文件的副本,并存储在同时创建的目录中。修改这些文件以包含PHPUnit逻辑。这适用于测试文件本身以及 php.ini (这会强制您在主php.ini文件中加载扩展以进行测试,因为会忽略其他.ini文件)。每次运行测试时,都会使用新的唯一名称(原始名称加唯一标识符)重新创建这些文件。
我发现解决此问题的最佳方法是为测试创建启动配置并将其保存为项目中的.launch文件(右键单击 - >运行为 - >创建新的PHPUnit config - >在公共选项卡中选择“共享文件”)。一旦你有了启动配置,你可以通过打开编辑器并单击Run按钮来运行它。您将看到每次运行它们之后,每个启动文件上都会出现如下所示的行(更容易看出配置是否在版本控制中):
<mapEntry key="ZEND_PHPUNIT_TESTS_LOCATION" value="/var/folders/my/ph9spb0s45z5_11l9tqw256r0000gn/T/DefaultWorkspace.phpunit.AssignmentRequestControllerDateCriteriaTest.php.4951739174960507380.php"/>
我通常只是将此更改与我当时正在进行的其他任何更改一起提交。
文件更改并因此启动配置仍然有点烦人,但至少以这种方式,您的测试将始终运行,您不必担心必须手动重新运行,或清理项目或类似的东西。