在单元测试中包含问题

时间:2019-06-07 15:11:24

标签: php phpunit phpstorm

当我对课程进行单元测试时,我需要更改包含路径,但是它自己的网站将无法工作。因此,每次测试时,我几乎都需要更改文件中的所有包含路径,并在测试后再次将它们更改回原位。这显然是不切实际的。

我大致理解为什么会这样;因为测试文件不在根目录中。

问题:如何在不更改包含路径的情况下将单元测试文件与被测试文件保存在同一文件夹中?

我尝试定义PATH常量。这也行不通,因为定义常量的文件在每次包含常量时都会对其重新定义,从而使其无用。

require_once 'database/CrudTest.php';
require_once 'UserModel.php';
require_once 'database/UserCrud.php';
use PHPUnit\Framework\TestCase;

class UserModelTest extends TestCase{
....

要测试类,我必须在测试所需的每个文件的每个包含文件之前加上“ ../”。然后在测试后将其删除。

1 个答案:

答案 0 :(得分:0)

这些要求不取决于包含路径或相对路径。您可以使用__DIR__获取测试文件所在目录的绝对路径,然后将其余路径设置为相对于该文件的所需文件。

require_once __DIR__ . '/database/CrudTest.php';

我不能100%地确定此路径是正确的,因为我不确定这些文件相对于测试文件的位置是否正确理解了您。您可能需要使用

require_once __DIR__ . '/../database/CrudTest.php';

但是无论如何,总体思路是相同的。这样,无论调用脚本或当前工作目录的相对位置如何,路径都是正确的。