gpt4 book ai didi

遗留环境中的 PHPUnit

转载 作者:行者123 更新时间:2023-11-28 21:25:45 24 4
gpt4 key购买 nike

我开始设置 PHPUnit (v4.8) 以便在我的“遗留”代码中使用(它不是那么遗留,但它有糟糕的编程实践)。

我的文件夹结构如下

/home
-phpunit.xml
/folder1
/folder2
/folder3
/vendor
/tests
-Test1.php
/includes
-functions.php
/libs
-User.php
-TableClass.php
....

函数.php

<?php
//require_once $_SERVER['DOCUMENT_ROOT'] . "/home/vendor/autoload.php" ;
require_once $_SERVER['DOCUMENT_ROOT'] . "/home/includes/libs/table_classes/User.php" ;
?>

我已经评论了那行,因为我认为 Composer 会自动加载它。 问题 1,我是否正确? (因为 phpunit 在我的测试类中被自动识别...)

Test1.php

<?php

class Test1 extends PHPUnit_Framework_TestCase
{
public function testSomething()
{
// $something = getColNameByStatusId(1);
$this->assertEquals(1,2);
}
}
?>

phpunit.xml

<phpunit bootstrap="includes/functions.php" colors="true">
<testsuite name="Test1" >
<directory>./tests</directory>
</testsuite>
</phpunit>

然后我执行 phpunit在命令行中

我的 functions.php在我的代码中工作正常,当然没有 Composer 集成,但是当它加载 phpunit 时它“中断”,我收到以下错误:

Warning: require_once(/home/includes/libs/table_classes/User.php): failed to open stream: No such file or directory in C:\wamp\www\home\includes\functions.php on line 18

我想我错过了 phpunit 的“加载”内容。我的代码不使用命名空间,PSR-0 和 PSR-4 都不使用。

问题 2- 在这种情况下如何正确加载文件?

我的目标是加载functions.php然后它将加载所有其他“表”类以进行我的测试

最佳答案

$_SERVER['DOCUMENT_ROOT'] 替换为 __DIR__ 并相应地调整路径,一切正常。

PHPUnit 没有设置 $_SERVER['DOCUMENT_ROOT'] 所以它找不到我的文件。 Apache 就是这样做的。所以PHPUnit的CLI找不到。

希望对其他人有帮助。

关于遗留环境中的 PHPUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40893792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com