我刚刚通过 Composer 安装了 Sebastian Bergmann 的 PHPUnit 3.7.19 版,并编写了一个我想进行单元测试的类。
我希望我的所有类都自动加载到每个单元测试中,而不必使用include
或require
在我的测试顶部,但事实证明这很困难!
这是我的目录结构的样子(尾部 / 斜杠表示目录,而不是文件):
- 作曲家.json
- 作曲家锁
- 作曲家.phar
- 库/
- 返回.php
- 测试/
- 返回Test.php
- 小贩/
- 仓/
- phpunit
- 作曲家/
- php单元/
- symfony/
- 自动加载.php
- 仓/
我的composer.json文件包括以下内容:
"require": {
"phpunit/phpunit": "3.7.*",
"phpunit/phpunit-selenium": ">=1.2"
}
我的返回.php类文件包括以下内容:
<?php
class Returning {
public $var;
function __construct(){
$this->var = 1;
}
}
?>
我的returnedTest.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 中找不到类“返回”
我注意到composer
生成了一个autoload.php
文件,vendor/autoload.php
但不确定这是否与我的问题有关。
此外,在 Stack Overflow 上的其他一些答案中,人们提到了在 composer 中使用PSR-0namespace
和PHP 中的命令,但我没有成功使用任何一个。
请帮忙!我只想在 PHPUnit 中自动加载我的类,这样我就可以使用它们来创建对象而不必担心include
or require
。
更新:2013 年 8 月 14 日
我现在创建了一个名为PHPUnit Skeleton的开源项目,以帮助您轻松地为您的项目启动和运行 PHPUnit 测试。