使用phpunit我在使用包含路径方面遇到了一些麻烦,不是针对phpunit本身,而是针对我的代码和测试目录。
我有以下代码结构:
Application
-StringCalculator.php
tests
-StringCalculatorTest.php
在我的StringCalculatorTest.php中,我有一个require语句:
require_once('../StringCalculator.php');
从tests文件夹中运行phpunit StringCalculatorTest.php
可以很好地工作。
然而,当我在根目录中引入phpunit.xml配置文件时,即
Application
-StringCalculator.php
tests
-StringCalculatorTest.php
phpunit.xml
包含路径被拧紧。我必须将require_once替换为
require_once('StringCalculator.php');
在应用程序和测试目录之间设置包含路径的正确方法是什么?
答案 0 :(得分:10)
设置PHP包含路径的最佳位置是在引导程序文件中。通常,您的phpunit.xml
文件将包含引导属性:
<phpunit backupGlobals="true"
backupStaticAttributes="false"
bootstrap="bootstrap.php"
cacheTokens="true"
colors="true"
... and so on ...
</phpunit>
然后在您的引导程序文件中,您可以设置包含路径,包括重要文件等。
set_include_path(get_include_path() . PATH_SEPARATOR . '../my/sources');
配置文件包含在PHPunit文档的Appendix C中。
编辑:更新了链接
答案 1 :(得分:8)
我知道问题已经回答了 这个答案是针对未来的访客
根据phpunit文档,您可以在includePath
中使用phpunit.xml
指令作为包含路径
<php>
<includePath>/path/to/ur/project</includePath>
</php>
答案 2 :(得分:3)
首先,我不了解require_once('../StringCalculator.php');
的工作原理,而应该是:require_once('../Application/StringCalculator.php');
。
然后,slashingweapon答案是好的,它是最好的IMO,但是如果你不想那么麻烦,你可以指定你的require_once
从当前文件的目录开始:
require_once(__DIR__ . '../Application/StringCalculator.php');