无法使用'use'关键字调用名称空间

时间:2018-11-04 21:40:56

标签: unit-testing namespaces phpunit

我正在学习有关PHPUnit的知识,但是从一开始,一些琐碎的事就让我迷失了脚步。

那是src文件夹中的Receipt PHP文件-

namespace TDD;

class Receipt {
    public function total(array $items = []) {
        return array_sum($items);
    }
}

这是测试文件夹中的ReceiptTest.php文件-

namespace TDD\Test;
require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR  . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';

use PHPUnit\Framework\TestCase;
use TDD\Receipt;

class ReceiptTest extends TestCase {
    public function testTotal() {
        $Receipt = new Receipt();
        $this->assertEquals(
            14,
            $Receipt->total([0,2,5,8]),
            'When summming the total should equal 15'
        );
    }
}

这是我运行vendor \ bin \ phpunit-

时的错误日志
PHPUnit 7.0.0 by Sebastian Bergmann and contributors.

E                                                                   1 / 1 (100%)

Time: 98 ms, Memory: 4.00MB

There was 1 error:

1) TDD\Test\ReceiptTest::testTotal
Error: Class 'TDD\Receipt' not found

C:\xampp\htdocs\PHPUnit\tests\ReceiptTest.php:10

ERRORS!
Tests: 1, Assertions: 0, Errors: 1.

1 个答案:

答案 0 :(得分:0)

我假设您使用Composer。如果是这样,只需将phpunit包含在您的composer.json开发需求中,如下所示:

"require-dev": {
    "phpunit/phpunit": "^7.0"
},
...

安装后,您将在bin文件夹中获得一个vendor文件夹,其中phpunit已自动加载并准备就绪。您可以使用$ php src/vendor/bin/phpunit运行它。