作者:黄勋佩淑青宜合 | 来源:互联网 | 2023-02-11 21:05
我正在玩php 7和phpunit 6.这是我写的测试:
attach($observer);
$user->changeEmail('foo@bar.com');
$this->assertCount(1, $observer->getChangedUsers());
}
}
当我尝试运行此测试时,我收到以下错误消息:
PHP Fatal error: Class 'PHPUnit\Framework\TestCase' not found in /home/.../.../Test/ObserverTest.php on line 9
我用composer安装了PHPUnit,这是我的composer.json文件内容:
{
"require": {
"phpunit/phpunit": "^6.0"
},
"autoload": {
"psr-4": {"DesignPatterns\\": "src/"}
}
}
根据PHPUnit 6文档,您的测试现在应该扩展PHPUnit\Framework\TestCase而不是PHPUnit_Framework_TestCase.
我知道这不是自动加载的问题.实际上,如果我用PHPUnit_Framework_TestCase替换PHPUnit\Framework\TestCase,它工作正常,但我想知道为什么这个语法不起作用.
我尝试了一些谷歌,stackoverflow和PHPUnit的github存储库的研究,但找不到任何东西.
我期待着你的回答,
编辑
这就是我的文件组织方式:
src/
??? DataMapper
? ??? StorageAdapter.php
? ??? UserMapper.php
? ??? User.php
??? Observer
? ??? UserObserver.php
? ??? User.php
Test/
??? DataMapperTest.php
??? ObserverTest.php
romaind..
15
我找到了答案:
我用这个命令行来测试我的测试:
phpunit Test/ObserverTest.php
PHPUnit全局安装在我的计算机上,但它是5.1.3版本:
phpunit -v
PHPUnit 5.1.3 by Sebastian Bergmann and contributors.
Runtime: PHP 7.0.13-0ubuntu0.16.04.1 with Xdebug 2.4.0
Configuration: /home/.../.../DesignPatterns/phpunit.xml
PHPUnit\Framework\TestCase语法仅适用于PHPUnit 6
现在,如果我跑php vendor/bin/phpunit Test/ObserverTest.php
,它完美地工作......
1> romaind..:
我找到了答案:
我用这个命令行来测试我的测试:
phpunit Test/ObserverTest.php
PHPUnit全局安装在我的计算机上,但它是5.1.3版本:
phpunit -v
PHPUnit 5.1.3 by Sebastian Bergmann and contributors.
Runtime: PHP 7.0.13-0ubuntu0.16.04.1 with Xdebug 2.4.0
Configuration: /home/.../.../DesignPatterns/phpunit.xml
PHPUnit\Framework\TestCase语法仅适用于PHPUnit 6
现在,如果我跑php vendor/bin/phpunit Test/ObserverTest.php
,它完美地工作......