Выполнение модульного теста изолированно в PHP - PullRequest
1 голос
/ 16 сентября 2011

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

Как пример:

TestClass1

  • Test1.1 (0.042395)
  • Испытание 1,2 (0,000392)
  • Испытание 1,3 (0,000325)
  • Испытание 1,4 (0,000645)

TestClass2

  • Test2.1 (0.042395)
  • Test2.2 (0.000392)
  • Test2.3 (0.000325)
  • Test2.4 (0.000645)

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

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

Могут ли я упустить другие возможности, которые могут повлиять на начальное время тестирования? Как правильно решить эту проблему?

Примечание : я знаю о существующих платформах модульного тестирования PHP, но я пытаюсь сделать что-то немного другое, поэтому, пожалуйста, не говорите "Просто используйте PHPUnit", так как это не так полезно, помогая мне решить эту проблему.

1 Ответ

2 голосов
/ 16 сентября 2011

Все тесты, которые вы делаете в PHP-коде, будут искажены.Я бы посоветовал изучить возможности профилирования Xdebug, чтобы получить более точные тесты: http://xdebug.org/docs/profiler

...