tôi đang chơi với php 7 và phpunit 6. Đây là thử nghiệm tôi đã viết:PHP Fatal error: Class 'PHPUnit Framework TestCase' không tìm thấy với PHPUnit 6 và 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());
}
}
Khi tôi cố gắng để chạy thử nghiệm này, tôi nhận được thông báo lỗi sau:
PHP Fatal error: Class 'PHPUnit\Framework\TestCase' not found in /home/.../.../Test/ObserverTest.php on line 9
tôi đã cài đặt PHPUnit với nhà soạn nhạc, đây là nội dung tập tin composer.json tôi:
{
"require": {
"phpunit/phpunit": "^6.0"
},
"autoload": {
"psr-4": {"DesignPatterns\\": "src/"}
}
}
Theo PHPUnit 6 documentation, các bài kiểm tra của bạn bây giờ được cho là mở rộng PHPUnit \ Framework \ TestCase thay vì PHPUnit_Framework_TestCase.
Tôi biết đó không phải là vấn đề với tính năng tự động tải. Trên thực tế, nếu tôi thay thế PHPUnit \ Framework \ TestCase bằng PHPUnit_Framework_TestCase, nó hoạt động tốt, nhưng tôi đã tự hỏi tại sao cú pháp này không hoạt động.
Tôi đã thử một số nghiên cứu về kho lưu trữ github của google, stackoverflow và PHPUnit, nhưng không thể tìm thấy bất kỳ thứ gì.
Tôi mong câu trả lời của bạn,
EDIT
Đây là cách tác phẩm của tôi được tổ chức:
src/
├── DataMapper
│ ├── StorageAdapter.php
│ ├── UserMapper.php
│ └── User.php
├── Observer
│ ├── UserObserver.php
│ └── User.php
Test/
├── DataMapperTest.php
└── ObserverTest.php
đi vào nhà cung cấp và xem liệu phpunit có ở đó hay không –
tệp thử nghiệm nằm trong thư mục src? nếu có nó cần phải có hậu tố DesignPatterns trong không gian tên? – Matteo
Xin chào, có, phpunit đã có. – romaind