phpunit перезапускает тесты случайным образом

72

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

Вот некоторые результаты, чтобы сделать видимым то, что происходит (тест перезапускается снова и снова):

PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from C:\workspace\cllctr\app\phpunit.xml

................................................................. 65 / 83 ( 78%)
...........PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from C:\workspace\cllctr\app\phpunit.xml

................................................................. 65 / 83 ( 78%)
...PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from C:\workspace\cllctr\app\phpunit.xml

................................................................. 65 / 83 ( 78%)
............PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from C:\workspace\cllctr\app\phpunit.xml

................................................................. 65 / 83 ( 78%)
............PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from C:\workspace\cllctr\app\phpunit.xml

................................................................. 65 / 83 ( 78%)
..................

Time: 01:03, Memory: 43.00Mb

OK (83 tests, 145 assertions)

Writing code coverage data to XML file, this may take a moment.

Generating code coverage report, this may take a moment.

Ниже приведен пример перезапуска Test Suite после выполнения всех тестов:

PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from C:\workspace\cllctr\app\phpunit.xml

................................................................. 65 / 83 ( 78%)
..................

Time: 01:29, Memory: 53.25Mb

OK (83 tests, 145 assertions)

Writing code coverage data to XML file, this may take a moment.

Generating code coverage report, this may take a moment.
PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from C:\workspace\cllctr\app\phpunit.xml

................................................................. 65 / 83 ( 78%)
............PHPUnit 3.6.10 by Sebastian Bergmann.

Поскольку мой другой проект работает без проблем, в моем коде должна быть какая-то проблема. Но я не могу понять, что может вызвать такое поведение! Журналы не показывают ничего неожиданного/странного.

ИЗМЕНИТЬ

Вчера я заметил что-то странное: я решил переключиться с MongoDB на MySQL из-за некоторых несвязанных причин. После того, как переход был выполнен, все тесты запускаются без каких-либо проблем. Я много раз пробовал, и я больше не могу воспроизвести его. Поскольку это произошло только с моими функциональными тестами, я склонен думать, что проблема заключается в моем классе WebTestCase, который выполняет некоторые команды для очистки и пересоздания базы данных. Может быть, кто-то, кто также использует MongoDB, может воспроизвести это поведение?

  • 0
    Похоже, это всегда происходит в одном и том же месте, 65/83. Можете ли вы выяснить, к какому тесту он подходит? Попробуйте использовать параметр --verbose при запуске.
  • 0
    65/83 означает, что в строке 1 выполнено 65 тестов (каждая точка - один тест). Во второй строке вы видите, что количество выполненных тестов не одинаково, поэтому я сомневаюсь, что это один тест, который не прошел. Поскольку тесты иногда работают, а иногда зацикливаются, я сомневаюсь, что это из-за одного теста. Но я буду расследовать дальше!
Показать ещё 8 комментариев
Теги:
unit-testing
phpunit

1 ответ

1

Я бы предложил проверить границы подключения к базам данных и пулы.

Например, если у вас максимальный предел в 100 подключений, и некоторые из тестов оставляют открытые соединения ( "утечки" ), вы попадаете в пределы там.

Это также объясняет, почему иногда это работает, и иногда оно достигает предела, так как ваша база данных может одновременно обрабатывать другие задачи, поэтому иногда вы попадаете в потолок, а в других случаях, когда ничего не запускается, вы можете успешно выполнять свои тесты.

Проверьте наличие постоянных сетевых подключений и других внешних ресурсов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню