PHPStorm 4.0 - невозможно запустить PHPUnit для одного класса/метода

У меня возникла проблема с моим проектом PHP (с использованием фреймворка Kohana 3.2) в PHPStorm 4.0.3. При настройке PHPUnit с областью класса или метода он не может обнаружить класс из указанного файла модульного тестирования, если тестовый класс расширяется от Unittest_Database_Testcase.

Например, мне не удалось протестировать приведенный ниже класс, поскольку в диалоговом окне Выбрать тестовый класс отображается сообщение "Ничего не показывать".

/**
 * Class cannot be chosen.
 */
class A_Test extends Unittest_Database_Testcase {
    public function test_something() { /* ... hence this method test cannot be chosen */ }
}

Однако, если файл расширяется от Unittest_Testcase, класс (и впоследствии метод) может быть обнаружен PHPStorm, и я смог запустить тест.

class A_Test extends Unittest_Testcase {
    public function test_something() {}
}

Я подозреваю, что причина в том, что PHPStorm еще не поддерживает индивидуальное тестирование базы данных. Есть ли способ обойти это?

Примечание. У меня нет проблем с выполнением всего набора тестов, однако меня беспокоит рост числа тестов. Запуск одного теста базы данных занимает примерно полсекунды (из-за задействованных запросов), поэтому будет очень много времени запускать весь набор тестов каждый раз, когда мне нужно убедиться, что только что написанный тест работает правильно.


person Arthur Rimbun    schedule 30.08.2012    source источник
comment
Когда вы нажимаете Ctrl+щелчок по Unittest_Database_Testcase, переходите ли вы к определению класса? Если да -- можете ли вы пойти дальше (к родительскому классу этого класса и так далее)? Я видел сообщение в прошлом, для похожей ситуации, и совет состоял в том, чтобы убедиться, что PhpStorm знает о классах PHPUnit (например, файлы PHPUnit, добавленные в проект как внешняя библиотека).   -  person LazyOne    schedule 31.08.2012
comment
Теперь это работает - я не включал PHPUnit как внешнюю библиотеку. Однако теперь он терпит неудачу по другой причине: у меня есть абстрактный класс с именем Abstract_Class, который находится между Unittest_Database_Testcase и моим файлом модульного теста (т. е. он наследует все тесты от абстрактного класса). Каждый раз, когда я запускаю один тест, он просто говорит, что класс «Abstract_Class» не найден. Как-то не распознали...   -  person Arthur Rimbun    schedule 05.09.2012
comment
Кто это сказал — PHPUnit или PhpStorm? Имейте в виду, что PHPUnit выполняет тесты, PhpStorm выполняет только интеграцию, поэтому Abstract_Class должен быть доступен для PHP во время выполнения.   -  person LazyOne    schedule 05.09.2012
comment
А теперь работает. Мне пришлось вручную включить Abstract_Class в файл начальной загрузки. Вероятно, потому что он не был включен автоматически, когда PHPUnit был указан в тестовом файле. Спасибо!   -  person Arthur Rimbun    schedule 06.09.2012


Ответы (1)


Для тех, кто пропустил это, ОП нашел ответ и разместил его в комментариях...

Мне пришлось вручную включить Abstract_Class в файл начальной загрузки. Вероятно, потому что он не был включен автоматически, когда PHPUnit был указан в тестовом файле.

person Potherca    schedule 07.09.2012