unit-testing - 无法使用“use”关键字调用命名空间
问题描述
我正在学习 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.
解决方案
首先你在主项目文件夹中的 composer.json 文件应该是这样的:
{
"autoload": {
"classmap": [
"src/"
]
},
"require-dev": {
"phpunit/phpunit": "^9"
}
}
然后在终端composer dump-autoload中运行以创建新的自动加载文件。在此尝试运行测试 vendor/bin/phpunit 测试
推荐阅读
- xpages - 使用 SSJS 比较两个日期字段
- tags - 如何将 URL 正确编码到 NFC 标签上?
- java - 如何在具有不同ID的字符串xml android中查找重复的字符串?
- stripe-payments - 我如何知道 Stripe 付款是否用于测试?
- c++ - (C++) 查找两个整数之间的所有素数(不使用 Eratosthanes 筛)
- javascript - Javascript 动画(Canvas)不能在 Firefox、Edge 上工作,但可以在 Chrome 上工作
- javascript - 在 asp.net 中的 javascript/jquery 中访问服务器端变量
- ios - 从 2018-10-23T06:01:10.806Z 转换为 10-May-2018 和一个单独的时间字符串
- sql - 如何避免在sql server中选择具有特殊符号的行
- android - 通过 Firebase 中的 JAVA 动态克隆/复制和填充 Layout 中的数据 - Android