【问题标题】:$_SERVER['ZEND_PHPUNIT_TESTS_LOCATION'] not set correctly in Zend Studio$_SERVER['ZEND_PHPUNIT_TESTS_LOCATION'] 在 Zend Studio 中未正确设置
【发布时间】:2012-07-09 19:09:52
【问题描述】:

我上周在 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 上。

对造成这种情况的原因有何见解?

谢谢!

【问题讨论】:

    标签: zend-framework phpunit zend-studio


    【解决方案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"/>
    

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

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

    【讨论】:

    • 所以,我在公共选项卡中找到了“共享文件”(在另存为下。另一个选项是“本地”)。我将共享文件设置为什么?我的电脑上的一些虚拟文件每次都不会改变?感谢您的详细解释!
    • 我建议在您的项目中创建一个名为“launchers”的文件夹并将启动配置存储在那里。通过这种方式,它们可以与项目的其余部分一起进行版本控制,并且可以被项目中的每个人使用。您可以为文件指定任何名称,但扩展名应为“.launch”。您必须先创建实际的 .launch 文件(空白),然后再将启动配置存储在那里(eclipse 怪癖)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多