我试图在PHP项目中使用PHPUnit。 这是我的项目结构(文件是斜体字体样式)
控制器
测试
供应商
composer.json
我的档案:
composer.json
{
"require-dev": {
"phpunit/phpunit":"5.5.4"
}
}
Pages.php
<?php
namespace controllers
class Pages
{
public function render()
{
return 'Hello World';
}
}
pagesTest.php
<?php
class PagesTest extends PHPUnit_Framework_TestCase
{
public function testRenderReturnsHelloWorld()
{
$pages = new \controllers\Pages();
$expected = 'Hello Word';
$this->assertEquals($expected, $pages->render());
}
}
当我打开命令行时,我写道:
C:\xampp\htdocs\PHPUnitTestProject\vendor\bin>phpunit ../../tests/PagesTest.php
我收到以下错误消息:PHP Fatal error: Class 'controllers\Pages' not found in C:\xampp\htdocs\PHPUnitTestProject\tests\pagesTest.php on line 7
这是一个路径问题。我认为这是因为它搜索的C:\xampp\htdocs\PHPUnitTestProject\vendor\bin\controllers\Pages()
并不存在
它应该是C:\xampp\htdocs\PHPUnitTestProject\controllers\Pages()
答案 0 :(得分:14)
您需要指向测试类,因此在pagesTest.php中添加一个require:
require __DIR__ . "/../controllers/Pages.php";
或如果您使用自动加载,则可以在命令行中bootstrap the autoload
phpunit --bootstrap src/autoload.php
或者你可以设置一个像这个例子的phpunit.xml配置文件(来自我上面链接的PHPUnit页面):
<phpunit bootstrap="src/autoload.php">
<testsuites>
<testsuite name="money">
<directory>tests</directory>
</testsuite>
</testsuites>
</phpunit>
然后使用--configuration选项。
答案 1 :(得分:1)
从根文件夹中调用phpunit
:
$ cd C:\xampp\htdocs\PHPUnitTestProject\
$ vendor\bin\phpunit tests/PagesTest.php
答案 2 :(得分:0)
在 phpunit.xml.dist 中添加BlobModule
为我解决了这个问题。
bootstrap="vendor/autoload.php"