我玩用PHP 7和6的PHPUnit這是我寫的測試:PHP致命錯誤:類 'PHPUnit的框架 TestCase的' 不使用PHPUnit 6和PHP發現7.0
<?php declare(strict_types=1);
namespace Test;
use DesignPatterns\Observer\User;
use DesignPatterns\Observer\UserObserver;
use PHPUnit\Framework\TestCase;
class ObserverTest extends TestCase
{
public function testChangeInUserLeadsToUserObserverBeingNotified()
{
$observer = new UserObserver();
$user = new User();
$user->attach($observer);
$user->changeEmail('[email protected]');
$this->assertCount(1, $observer->getChangedUsers());
}
}
當我試圖運行這個測試,我得到了以下錯誤消息:
PHP Fatal error: Class 'PHPUnit\Framework\TestCase' not found in /home/.../.../Test/ObserverTest.php on line 9
我安裝了作曲家PHPUnit的,這是我composer.json文件內容:
{
"require": {
"phpunit/phpunit": "^6.0"
},
"autoload": {
"psr-4": {"DesignPatterns\\": "src/"}
}
}
根據PHPUnit 6 documentation,您的測試現在應該擴展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
去供應商,看如果phpunit是否存在 –
測試文件是在src文件夾?如果是,它應該在命名空間中有DesignPatterns後綴? – Matteo
嗨,是的,phpunit在那裏。 – romaind