2015-03-26 2 views
0

Я следую примерам в руководстве PHPUnit. См. Два тестовых файла ниже. Я запускаю тесты в Eclipse PDT с установленным PTI. Я вижу следующие проблемы:PHPUnit не запускает свои тесты

  • При запуске DependencyFailureTest он не распознает его как тест. Не работает ничего.
  • При запуске MultipleDependenciesTest он работает и упоминает, что все три тестовых примера проходят, как и должно быть. Однако, если я затем изменю ожидаемый результат в функции testConsumer на массив («первый», «третий»), он все еще упоминает, что все тестовые примеры проходят, хотя один из них должен явно терпеть неудачу. Кроме того, когда я изменяю одно из утверждений на $this->assertTrue(FALSE);, я ожидаю неудачный и пропущенный тестовый пример, но снова все тестовые примеры проходят.

Кто-нибудь испытал нечто подобное и решил это?

DependencyFailureTest

<?php 
class DependencyFailureTest extends PHPUnit_Framework_TestCase 
{ 
    public function testOne() 
    { 
     $this->assertTrue(FALSE); 
    } 

    /** 
    * @depends testOne 
    */ 
    public function testTwo() 
    { 
    } 
} 
?> 

MultipleDependenciesTest

<?php 
class MultipleDependenciesTest extends PHPUnit_Framework_TestCase 
{ 
    public function testProducerFirst() 
    { 
     $this->assertTrue(true); 
     return 'first'; 
    } 

    public function testProducerSecond() 
    { 
     $this->assertTrue(true); 
     return 'second'; 
    } 

    /** 
    * @depends testProducerFirst 
    * @depends testProducerSecond 
    */ 
    public function testConsumer() 
    { 
     $this->assertEquals(
      array('first', 'second'), 
      func_get_args() 
     ); 
    } 
} 
?> 
+0

Я думаю, что ваш тест в порядке! Вы пытались запустить в командной строке? Что такое ошибка в журнале? – acfreitas

+0

Хммм, теперь я пытаюсь воспроизвести свою собственную проблему, и, похоже, она работает так, как должна. : -Не подскажите, что сейчас изменилось. – physicalattraction

+0

Что такое трассировка стека из плагина? – acfreitas

ответ

0

У меня нет хорошего ответа пока, только некоторые черной магии вуду. Я заметил, что для запуска его в командной строке мне нужно включить тестируемый класс.

<?php 

require_once ('path/to/Car.php') 

class CarTest extends PHPUnit_Framework_TestCase { 
... 

Для запуска его в PTI я упоминаю файл в файле Bootstrap в настройках PHPUnit. Поэтому этот оператор reuire_once не требуется. Но хуже, однако, этот оператор require_once заставляет тест не запускаться!

Что-то странное, что я заметил, что в свое время мои тесты не выполнялись, даже без инструкции require_once. В настройках PHPUnit у меня была опция «Не проверять равные пространства имен при поиске включенных классов php/test case». Я отключил его, и он сработал. Я снова включил его, и он все еще работал.

Eclipse PHPUnit preferences

Смежные вопросы