遗留环境中的PHPUnit

时间:2016-11-30 16:47:43

标签: php unit-testing testing phpunit

我开始设置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'类来进行测试

2 个答案:

答案 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)

我认为最好通过运行

开始使用PHPUnit
phpunit --generate-configuration

并遵循一些简单的问题。

要自动加载'functions.php'和其他表'classes',您可以尝试通过composer.json自动加载。

"autoload": {
  "psr-4": {
    "Model\\": "libs/"
  }
}

以下是带有自动加载功能的link供您参考。