我开始设置PHPUnit(v4.8)以用于我的“遗留”代码(它不是那么遗留,但它有不好的编程实践)。
我的文件夹结构如下
/home
-phpunit.xml
/folder1
/folder2
/folder3
/vendor
/tests
-Test1.php
/includes
-functions.php
/libs
-User.php
-TableClass.php
....
的functions.php
<?php
//require_once $_SERVER['DOCUMENT_ROOT'] . "/home/vendor/autoload.php" ;
require_once $_SERVER['DOCUMENT_ROOT'] . "/home/includes/libs/table_classes/User.php" ;
?>
我评论过这一行,因为我认为作曲家会自动加载它。 问题1 ,我是谁? (因为phpunit会在我的Test类中自动识别...)
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
在我的代码中运行正常,当然没有编写器集成,但是当它加载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
然后它会加载所有其他'table'类来进行测试
答案 0 :(得分:1)
将u = list(unique(v))
Pv = expand.grid(rep(u,9))
Pv = Pv[rowSums(Pv==-1)==3 & rowSums(Pv==0)==3,]
替换为$_SERVER['DOCUMENT_ROOT']
并相应调整路径,一切正常。
PHPUnit没有设置__DIR__
所以它找不到我的文件。阿帕奇那样做。所以PHPUnit的CLI无法找到它。
希望它可以帮助别人。
答案 1 :(得分:0)
我认为最好通过运行
开始使用PHPUnitphpunit --generate-configuration
并遵循一些简单的问题。
要自动加载'functions.php'
和其他表'classes'
,您可以尝试通过composer.json自动加载。
"autoload": {
"psr-4": {
"Model\\": "libs/"
}
}
以下是带有自动加载功能的link供您参考。