使用 Composer 和 autoload 在 PHPUnit 中自动加载类.php
我刚刚通过Composer安装了Sebastian Bergmann的PHPUnit版本3.7.19,并编写了一个我想进行单元测试的类。
我希望我的所有类都自动加载到每个单元测试中,而不必使用或处于测试的顶部,但事实证明这很困难!include
require
这就是我的目录结构的样子(尾随/斜杠表示目录,而不是文件):
* composer.json
* composer.lock
* composer.phar
* lib/
* returning.php
* tests/
* returningTest.php
* vendor/
* bin/
* phpunit
* composer/
* phpunit/
* symfony/
* autoload.php
我的 composer.json 文件包括以下内容:
"require": {
"phpunit/phpunit": "3.7.*",
"phpunit/phpunit-selenium": ">=1.2"
}
我返回.php类文件包括以下内容:
<?php
class Returning {
public $var;
function __construct(){
$this->var = 1;
}
}
?>
我的返回测试.php测试文件包括以下内容:
<?php
class ReturningTest extends PHPUnit_Framework_TestCase
{
protected $obj = null;
protected function setUp()
{
$this->obj = new Returning;
}
public function testExample()
{
$this->assertEquals(1, $this->obj->var);
}
protected function tearDown()
{
}
}
?>
但是,当我从命令行运行时,我收到以下错误:./vendor/bin/phpunit tests
PHP 致命错误:在第 8 行的 /files/code/php/db/tests/returningTest.php 中找不到类“Returning”
我注意到 生成了一个文件,但不确定这是否与我的问题有关。composer
autoload.php
vendor/autoload.php
此外,在Stack Overflow的其他一些答案中,人们提到了一些关于在作曲家中使用PSR-0和在PHP中使用命令的事情,但我没有成功地使用任何一个。namespace
请帮忙!我只想在PHPUnit中自动加载我的类,这样我就可以使用它们来创建对象,而不必担心或.include
require
更新日期:2013 年 8 月 14 日
我现在已经创建了一个名为PHPUnit Skeleton的开源项目,以帮助您轻松地启动并运行PHPUnit测试。