2015-04-14 5 views
0

У меня есть набор тестов, которые нужно запускать с использованием административного пользователя, а некоторые из них должны выполняться с использованием неадминистративного пользователя. Кроме того, один из этих тестов зарегистрировал в моей системе неадминистративный пользователь. Поэтому я подумал об использовании этого недавно зарегистрированного пользователя, который будет использоваться другими тестами.Организация тестовых наборов PHPUnit

В PHPUnit Manual путь показан в котором для выполнения тестов в определенном порядке

<phpunit bootstrap="src/autoload.php"> 
    <testsuites> 
    <testsuite name="money"> 
     <file>tests/FirstTest.php</file> 
     <file>tests/SecondTest.php</file> 
     <file>tests/ThirdTest.php</file> 
     <file>tests/FourthTest.php</file> 
    </testsuite> 
    </testsuites> 
</phpunit> 

Поскольку это раздражает, чтобы сохранить этот список для каждого нового TestCase Я хотел указать TestCase, который регистрирует конкретный сначала пользователь, а затем все остальные testcases в каталоге

<phpunit bootstrap="src/autoload.php"> 
    <testsuites> 
    <testsuite name="money"> 
     <file>tests/RegistrationTest.php</file> 
     <directory>tests</directory> 
    </testsuite> 
    </testsuites> 
</phpunit> 

к сожалению PHPUnit, кажется, игнорирует вручную указанные заказы, как только один <directory> определяется в конфигурационном файле.

Есть ли способ обойти эту проблему и сначала запустить конкретный тест из каталога?

FYI Я работаю с PHPUnit версии 4.5.0

ответ

0

Тесты должны быть независимы друг от друга, вы не должны использовать тест для установки другого.

Для чего вам нужен код для подготовки пользователей, необходимых для каждого типа теста, и использовать его по методам setUp или setUpBeforeClass, когда это необходимо. Каждый тест должен иметь возможность создавать данные, необходимые для запуска.

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

+0

Я знаю, что это действительно плохая практика, чтобы некоторые тестовые окна зависели от других, но так как процесс регистрации довольно сложный, и тесты, которые я пишу, не взаимодействуют с самим PHP-кодом, но с интерфейсом, t быть эффективным для создания нового пользователя для каждого теста и последующего его удаления. – Dero

+0

Вы имеете в виду, что тесты являются функциональными, поэтому вы действительно просматриваете свой сайт? Я также столкнулся с этой проблемой и использовал подход, который я предложил в своем ответе: иметь вспомогательный модуль, который принимает экземпляр браузера Selenium или все, что вы используете, и выполнять некоторые действия (логин, создать нового пользователя и т. Д.), Чтобы реальный тест может начаться после этой конфигурации. Также, если что-то плохое, должно быть вызвано исключение, поэтому тест будет терпеть неудачу с ошибкой, а не сбой. – gontrollez

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