我正在尝试使用PHPUnit
运行单元测试。但我得到class not found error
。我现在已经尝试了很长时间,但我仍然无法找到问题所在。
这是文件夹结构。
我在Calc
文件夹中有<base>/stats/cls
类
并在<base>/stats/Tests
文件夹
composer.json
档案
{
"name": "app/test",
"description": "I am learning PHPUnit",
"authors": [
{
"name": "Fawzan",
"email": "xxxxxx@xxx.xxx"
}
],
"minimum-stability": "dev",
"require": {},
"require-dev": {
"phpunit/phpunit" : "*"
}
}
Calc.php
档案
<?php
namespace stats\cls;
class Calc
{
public function add($a, $b)
{
return $a + $b;
}
}
CalcTest.php
档案
<?php
namespace stats\Tests;
use stats\cls\Calc;
class CalcTest extends \PHPUnit_Framework_TestCase
{
public function testAddEquals()
{
$x = 10;
$y = 20;
$baseball = new Calc();
$result = $baseball->add($x, $y);
$expectedResult = $x + $y;
var_dump($result);
$this->assertEquals($expectedResult, $result);
}
}
phpunit.xml
档案
<?xml version="1.0" encoding="utf-8" ?>
<phpunit colors="true" bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="Application Test Unit">
<directory>./stats/Tests/</directory>
</testsuite>
</testsuites>
</phpunit>
当我运行phpunit
命令时,我收到以下错误。
PHP Fatal error: Class 'stats\cls\Calc' not found in /var/www/stats/Tests/CalcTest.php on line 26
任何人都可以帮助我吗?
答案 0 :(得分:1)
您的composer.json
中没有自己的代码自动加载,因此bootstrapping vendor/autoload.php
只会加载依赖项 - 在本例中为PHPUnit。
您仍然需要加载要测试的课程。最简单的方法是使用Composer定义自动加载:
作为一种快速解决方法,您仍然可以在测试顶部(命名空间行下方)使用require_once()
来加载测试类,但这只是证明代码有效的捷径。从长远来看,习惯于将自动加载定义添加到composer.json
更容易。