2017-02-14 20 views
6

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 
+0

đi vào nhà cung cấp và xem liệu phpunit có ở đó hay không –

+0

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

+0

Xin chào, có, phpunit đã có. – romaind

Trả lời

7

Tôi tìm thấy câu trả lời:

Tôi đã excuting thử nghiệm của tôi với dòng lệnh sau:

phpunit Test/ObserverTest.php 

PHPUnit được cài đặt trên toàn cầu trên máy tính của tôi, nhưng nó là phiên bản 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 

Và cú pháp PHPUnit \ Framework \ TestCase chỉ làm việc với PHPUnit 6

Bây giờ, nếu tôi chạy php vendor/bin/phpunit Test/ObserverTest.php, nó hoạt động hoàn hảo ...

Các vấn đề liên quan