Я все глубже и глубже погружаюсь в мир модульного тестирования.
Одна проблема, с которой я столкнулся, и именно здесь я хотел бы получить обратную связь, - это запуск нескольких наборов тестов, возможно, это только я, но мне нужно использовать параметр --process -olated для прохождения моих тестов. Я могу запустить любой из моих наборов по отдельности без проблем, но запуск 6-7 наборов, которые у меня есть, с распределением между ними 180 утверждений, не удастся, если я буду работать без --process -olated. Проблема в том, что при использовании этого параметра тестовый запуск длится 35 минут по сравнению с обычными 2,5 минутами. Это долгое ожидание.
Проблема связана с использованием поддельных контейнеров DI для определенных тестов, и контейнеры не повторно инициализируются должным образом, когда наборы тестов выполняются в цепочке. Статические свойства, установленные в DI-контейнере для проверки ожидаемых сбоев, приводят к сбою тестов в следующем наборе. Контейнер имеет параметр, который может содержать содержащийся объект в статической переменной, чтобы возвращать один и тот же экземпляр при каждом вызове. Замаскированный синглтон. И это отлично работает на уровне приложения, это просто неудобство для тестирования.
Я мог бы избежать этого параметра контейнера и закодировать приложение так, чтобы оно не использовало статические свойства, но отказ от полезной языковой конструкции ради методологии кажется излишним.
Может быть, я делаю что-то не так (я очень на это надеюсь!), Но у меня сложилось впечатление, что если кто-то хочет запускать тесты с SUT в чистом состоянии для каждого теста, не обойтись без использования --process -olated. Это делает тестирование очень трудоемким и немного лишает его удовольствия. Я немного обошел эту проблему, запустив комплекты и тесты индивидуально, когда я кодирую, и запустив комплект в фоновом режиме перед крупными фиксациями.
Я испытываю нормальные ощущения, и есть ли способ противостоять этому? Как вы, тестировщики, обеспечиваете разумное время тестирования? Как обрабатываются статические параметры, чтобы не влиять на тестирование?
Любое понимание / комментарии приветствуются.