Phpunit测试套件包括路径



使用phpunit,我遇到了一些麻烦,包括路径,而不是phpunit本身,而是用于我的代码和测试目录。

我有以下代码结构:

Application
  -StringCalculator.php
tests
  -StringCalculatorTest.php

在我的字符串calculatortest.php中,我有一个要求语句:

require_once('../StringCalculator.php');

从测试文件夹内部运行phpunit StringCalculatorTest.php完美工作。

但是,当我在根目录中引入phpunit.xml配置文件时。

Application
  -StringCalculator.php
tests
  -StringCalculatorTest.php
phpunit.xml

包括路径被拧紧。我必须将require_once替换为

require_once('StringCalculator.php');

设置的正确方法是什么包括应用程序和测试目录之间的路径?

设置php包含路径的最佳位置位于引导程序中。通常,您的phpunit.xml文件将包括一个bootstrap属性:

<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文档的附录C中介绍了配置文件。

编辑:链接更新

我知道这个问题已经回答
这个答案适用于未来的访客

根据Phpunit文档,您可以在 phpunit.xml中使用includePath指令进行包含路径

<php>
  <includePath>/path/to/ur/project</includePath>
</php>

首先,我不明白require_once('../StringCalculator.php');的工作原理,它应该是: require_once('../Application/StringCalculator.php');

然后,slashingweapon答案很好,这是最好的IMO,但是,如果您不想要那么多麻烦,则可以指定require_once从当前文件的目录开始:

require_once(__DIR__ . '../Application/StringCalculator.php');

最新更新