Сколько памяти для модульного тестирования в порядке? - PullRequest
2 голосов
/ 10 октября 2011

У меня ~ 700 тестов с ~ 1500 утверждениями, тесты выполняются на sqlite на ОЗУ.Я запускаю это, используя phpunit /dir/name, без каких-либо дополнительных настроек пакета.

Тесты написаны хорошо (я надеюсь, что так), приложение и каждый тест выполняется быстро, и использование памяти для каждого невеликоникогда не больше 10M).

Все в порядке, когда тесты выполняются раздельно.Но когда я запускаю все тесты вместе, PHPUnit сообщает об использовании памяти около 450 МБ.

  • Хорошо ли 500 МБ?Должен ли я обновить memory_limit до 700 МБ, чтобы быть безопасным?
  • Как избежать такого использования памяти?

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

Обновление:

Мы используем транзакции и откат изменений в БД в tearDown()

Ответы [ 2 ]

3 голосов
/ 11 октября 2011

PHPUnit создает тестовый пример для каждого метода тестирования и каждого массива аргументов для каждого поставщика данных перед выполнением каких-либо тестов.Для загрузки любое исключение и ошибка подтверждения имеет ссылку на экземпляр, который его выбросил.Это делает очень важным сбросить все переменные экземпляра, которые вы назначили для теста в tearDown(), как сказал MasterCassim.

Но это в основном означает, что вы должны принять растущее требование к памяти по мере увеличения количества тестов.Если вы также генерируете покрытие кода, это значительно возрастает.Наш основной проект веб-сайта выполняется с лимитом 2 ГБ.

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

Примечание: Проблема № 10 должна решить эту проблему, но я не знаю, каково ее состояние в версии 3.6.

1 голос
/ 10 октября 2011

Если вы запускаете тесты вместе, вы должны использовать метод tearDown () для «освобождения» памяти.

...