phpunit - тестирование выполняется очень медленно

Я все глубже и глубже погружаюсь в мир модульного тестирования.

Одна проблема, с которой я столкнулся, и именно здесь я хотел бы получить обратную связь, - это запуск нескольких наборов тестов, возможно, это только я, но мне нужно использовать параметр --process -olated для прохождения моих тестов. Я могу запустить любой из моих наборов по отдельности без проблем, но запуск 6-7 наборов, которые у меня есть, с распределением между ними 180 утверждений, не удастся, если я буду работать без --process -olated. Проблема в том, что при использовании этого параметра тестовый запуск длится 35 минут по сравнению с обычными 2,5 минутами. Это долгое ожидание.

Проблема связана с использованием поддельных контейнеров DI для определенных тестов, и контейнеры не повторно инициализируются должным образом, когда наборы тестов выполняются в цепочке. Статические свойства, установленные в DI-контейнере для проверки ожидаемых сбоев, приводят к сбою тестов в следующем наборе. Контейнер имеет параметр, который может содержать содержащийся объект в статической переменной, чтобы возвращать один и тот же экземпляр при каждом вызове. Замаскированный синглтон. И это отлично работает на уровне приложения, это просто неудобство для тестирования.

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

Может быть, я делаю что-то не так (я очень на это надеюсь!), Но у меня сложилось впечатление, что если кто-то хочет запускать тесты с SUT в чистом состоянии для каждого теста, не обойтись без использования --process -olated. Это делает тестирование очень трудоемким и немного лишает его удовольствия. Я немного обошел эту проблему, запустив комплекты и тесты индивидуально, когда я кодирую, и запустив комплект в фоновом режиме перед крупными фиксациями.

Я испытываю нормальные ощущения, и есть ли способ противостоять этому? Как вы, тестировщики, обеспечиваете разумное время тестирования? Как обрабатываются статические параметры, чтобы не влиять на тестирование?

Любое понимание / комментарии приветствуются.

42
задан hakre 11 December 2012 в 02:02
поделиться