0

上周我在 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 -> Clean 没有帮助。我在运行 Snow Leopard 的 Mac 上。

关于造成这种情况的任何见解?

谢谢!

4

1 回答 1

1

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

我发现解决此问题的最佳方法是为测试创建启动配置并将它们保存为项目中的 .launch 文件(右键单击 -> 运行为 -> 创建新的 PHPUnit 配置 -> 选择“共享文件”在通用选项卡中)。一旦你有了启动配置,你可以通过在编辑器上打开并单击运行按钮来运行它。您会看到,每次运行它们后,每个已更改的启动文件上都会有如下一行(很容易查看配置是否在版本控制中):

<mapEntry key="ZEND_PHPUNIT_TESTS_LOCATION" value="/var/folders/my/ph9spb0s45z5_11l9tqw256r0000gn/T/DefaultWorkspace.phpunit.AssignmentRequestControllerDateCriteriaTest.php.4951739174960507380.php"/>

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

文件更改并因此启动配置仍然有点烦人,但至少以这种方式,您的测试将始终运行,您不必担心必须手动重新运行,或清理项目或任何事情像那样。

于 2012-07-24T14:57:19.973 回答