Поскольку время, необходимое для запуска полного набора PHPUnit, наша команда начинает задаваться вопросом, есть ли возможность параллельно выполнять параллельные тесты. Недавно я прочитал статью о Paraunit, также написал Sebastian Bergman, он добавит параллелизм в PHPUnit 3.7.Параллельное тестирование PHPUnit в тестах интеграции
Но остается проблема с интеграционными тестами или, в более общем плане, тестами, которые взаимодействуют с БД. Для обеспечения согласованности, testDB должен быть сброшен, а приборы будут загружены после каждого теста. Но в параллельных тестах есть проблема с условиями гонки, потому что все процессы используют тот же DB.
Чтобы иметь возможность параллельно выполнять интеграционные тесты, , мы должны назначить собственную базу данных для каждого процесса. Я хотел бы спросить, есть ли у кого-то какие-то мысли о том, как эта проблема может быть решена. Возможно, уже реализованы решения этой проблемы в другой реализации xUnit.
В моей команде мы используем MongoDB, поэтому одним из решений было бы программное создание конфигурационного файла для каждого процесса PHPUnit с сгенерированным именем БД (для этого процесса) и в методе setUp()
мы могли бы клонировать основной TestDb в этот временный. Но прежде чем мы начнем применять этот подход, я хотел бы попросить ваши идеи по этой теме.
Смежный вопрос (о параллельном XUnit в целом): http://programmers.stackexchange.com/q/56092/58909 Но опять же, как к испытаний с базы данных на самом деле не решаются. –
Очень интересная дискуссия. Я нашел это предложение особенно в связи с нашей ситуацией: «Все это может быть закодировано, и простой пример может быть оптимизирован для работы, но для этого, вероятно, не нужно использовать исходную программу. вы можете запускать модульные тесты, неразумно для многих людей. Поэтому многопоточные модульные тесты должны оставаться дополнительными ». –
Я бы запускал их в отдельных виртуальных машинах. –