У меня есть набор тестов, которые нужно запускать с использованием административного пользователя, а некоторые из них должны выполняться с использованием неадминистративного пользователя. Кроме того, один из этих тестов зарегистрировал в моей системе неадминистративный пользователь. Поэтому я подумал об использовании этого недавно зарегистрированного пользователя, который будет использоваться другими тестами.Организация тестовых наборов 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
Я знаю, что это действительно плохая практика, чтобы некоторые тестовые окна зависели от других, но так как процесс регистрации довольно сложный, и тесты, которые я пишу, не взаимодействуют с самим PHP-кодом, но с интерфейсом, t быть эффективным для создания нового пользователя для каждого теста и последующего его удаления. – Dero
Вы имеете в виду, что тесты являются функциональными, поэтому вы действительно просматриваете свой сайт? Я также столкнулся с этой проблемой и использовал подход, который я предложил в своем ответе: иметь вспомогательный модуль, который принимает экземпляр браузера Selenium или все, что вы используете, и выполнять некоторые действия (логин, создать нового пользователя и т. Д.), Чтобы реальный тест может начаться после этой конфигурации. Также, если что-то плохое, должно быть вызвано исключение, поэтому тест будет терпеть неудачу с ошибкой, а не сбой. – gontrollez