2015-08-31 2 views
0

Я использую phpunit с cakephp для тестирования, но когда я пытаюсь запустить некоторый тестовый класс, выбрасываете Fatal Error, но этот класс вставлен правильно и даже не обвинен в отсутствии файла. Ошибка PhpStorm.Класс PHPUnit не найден, но включен правильно

Команда для выполнения TestCase:

c:\xampp\htdocs\PROJETOS\Shopping\vendor\phpunit>phpunit "C:/xampp/htdocs/PROJETOS/Shopping/tests/TestCase/Model/Table/UsersTableTest.php"

Фатальная ошибка:

Fatal error: Class 'Cake\TestSuite\TestCase' not found in C:\xampp\htdocs\PROJET OS\Shopping\tests\TestCase\Model\Table\UsersTableTest.php on line 12

Тестовый пример:

<?php 
namespace App\Test\TestCase\Model\Table; 

use App\Model\Table\UsersTable; 
use Cake\ORM\TableRegistry; 
use Cake\TestSuite\TestCase; 

/** 
* App\Model\Table\UsersTable Test Case 
*/ 
class UsersTableTest extends TestCase 
{ 

    /** 
    * Fixtures 
    * 
    * @var array 
    */ 
    public $fixtures = [ 
     'app.users', 
     'app.user_types', 
     'app.bookings', 
     'app.stores' 
    ]; 

    /** 
    * setUp method 
    * 
    * @return void 
    */ 
    public function setUp() 
    { 
     parent::setUp(); 
     $config = TableRegistry::exists('Users') ? [] : ['className' => 'App\Model\Table\UsersTable']; 
     $this->Users = TableRegistry::get('Users', $config); 
    } 

    /** 
    * tearDown method 
    * 
    * @return void 
    */ 
    public function tearDown() 
    { 
     unset($this->Users); 

     parent::tearDown(); 
    } 

    /** 
    * Test initialize method 
    * 
    * @return void 
    */ 
    public function testInitialize() 
    { 
     $this->markTestIncomplete('Not implemented yet.'); 
    } 

    /** 
    * Test validationDefault method 
    * 
    * @return void 
    */ 
    // Método que deverá testar o método "validationDefault()" de "UsersTable", 
    // mas como e quando este método será chamado? 
    // A ferramenta seleciona o método a ser executado 
    public function testValidationDefault() 
    { 
     $this->markTestIncomplete('Not implemented yet.'); 
    } 

    /** 
    * Test buildRules method 
    * 
    * @return void 
    */ 
    public function testBuildRules() 
    { 
     $this->markTestIncomplete('Not implemented yet.'); 
    } 

    public function testFindUserById(){ 
     $query = $this->Users->find('userById', [ 
      'conditions' => ['Users.id' => 900000], 
      'fields' => ['Users.id', 'Users.email', 'Users.password', 
       'Users.username', 'Users.user_type_id', 'Users.created', 
       'Users.modified'] 
     ]); 
     $this->assertInstanceOf('Cake\ORM\Query', $query); 
     $result = $query->hydrate(false)->toArray(); 

     $expected = [ 
      [ 
       'id' => 900000, 
       'email' => '[email protected]', 
       'password' => 'usuariocomum1senha', 
       'username' => 'usuariocomum1username', 
       'user_type_id' => 900000, 
       'created' => '2015-07-17 18:46:47', 
       'modified' => '2015-07-17 18:46:47' 
      ] 
     ]; 

     $this->assertEquals($expected, $result); 
    } 
} 

В папке: [ProjectName]/тесты/есть 2 папки Fixture и TestCase и 1 файл bootstrap.php

Моя папка Структура:

inserir a descrição da imagem aqui

конфигурации и тесты папки:

enter image description here

папку PHPUnit (внутри папки поставщика (установленной с композитором))

enter image description here

папка bin в продаже или папка

enter image description here

Когда я удалить PHPUnit с композитором следует, что ответ: How to remove unused dependencies from composer? еще есть PHPUnit папка со странным файлом (Это нормально?)

enter image description here

ПРИМЕЧАНИЕ : Я использую CakePHP 3.0.11 и PHPHUnit 4.8

+0

Где вы делаете на самонастройки/автозагрузку? – Halcyon

+0

В папке: [ProjectName]/tests/имеет 2 папки Fixture и TestCase и 1 файл bootstrap.php, как я могу загрузиться? – Ricardo

+1

Вы можете передать файл конфигурации в 'phpunit', который сообщает ему, как загрузочный файл. Я не знаю, как это работает. Вот документ: https://phpunit.de/manual/current/en/appendixes.configuration.html – Halcyon

ответ

2

Согласно CakePHP documentation, вы должны запустить исполняемый phpunit, расположенные в папке vendor/bin (есть phpunit.xml.dist файла в вашем CakePHP приложении, так что вы должны запустить исполняемый файл из корневой папки):

C:\...\Shopping> vendor\bin\phpunit tests\TestCase\Model\Table\UsersTableTest.php 

Если у вас нет таких исполняемого , у вас, вероятно, есть «плохая» установка phpunit. Вы должны удалить его (и папку vendor/phpunit) и установите его следующим образом:

php composer.phar require phpunit/phpunit:4.8 
+0

Спасибо за помощь! – Ricardo