Модульное тестирование зависимости кода - PullRequest
6 голосов
/ 19 августа 2011

На моем рабочем месте у нас есть решение ac # .net, содержащее около 50 проектов и около 2000 модульных тестов.После изменения кода необходимо, чтобы мы выполнили все тесты в решении, прежде чем отправлять наши изменения на сервер сборки.Выполнение всех тестов может занять около 10-15 минут.Я думал - эй, может быть, может быть какой-нибудь процесс, который проанализирует все изменения кода, которые я сделал, а затем решит запустить только соответствующие методы тестирования.Если такой анализ возможен, то вместо запуска 2000 тестов компьютер будет выполнять только 15 или 100 тестов, тогда мы говорим об очень хорошем увеличении производительности и уменьшении головной боли.У кого-нибудь есть идеи, как это реализовать, или если такое программное обеспечение доступно?

Ответы [ 4 ]

5 голосов
/ 19 августа 2011

Действительно сложно сказать, что зависит от того, что в многопроектной среде.В идеале:

  • Ваши юнит-тесты будут правильными юнит-тесты , и 2000 из них должны быть выполнены, возможно, за 20 секунд.
  • Ваши более длительные тесты будутнастроить непрерывную сборку на сервере сборки, так что вы все равно будете получать довольно быстрое уведомление о том, что вы все испортили, если что-то пропустили, но вы могли бы лично позволить себе быть просто «1008» немного »1009 * более избирательным в работе толькотесты, которые, как вы думаете, могли повлиять на ваш код, изменились до фиксации.
2 голосов
/ 19 августа 2011

Visual Studio 2010 Premium и Ultimate имеют инструмент «Test Impact», который делает именно это.

2 голосов
/ 19 августа 2011

Наш C # Инструмент тестирования покрытия может сделать это.

  1. Это постепенно инструменты только файлы, которые изменились с последний тестовый запуск.

  2. Может использоваться для отслеживания покрытия тестов для каждого модульного теста и определения того, какие файлы задействованы. Когда файл изменяется, он сравнивает его с предыдущей версией; если метод участвует в некоторых модульных тестах ранее внесенных изменений, он идентифицирует эти модульные тесты. Вы должны организовать этот процесс, чтобы связать тестовые прогоны с данными покрытия и повторно запустить идентифицированные модульные тесты, но это небольшой вопрос сценариев. Причина этого заключается в том, что инструмент покрытия покрытия может работать с произвольными средами тестирования.

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

0 голосов
/ 02 октября 2013

В нашей среде мы используем NCrunch http://www.ncrunch.net/

Создает проекты и запускает модульные тесты в фоновом режиме, используя несколько потоков Приятно уведомляет вас о неудачных юнит-тестах.

NCrunch делает то, что вам нужно. Посмотри.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...