Как Вы структурируете свои тесты NUnit на крупном проекте?

Я интересуюсь наблюдением, если я могу улучшить способ, которым мы используем NUnit в решении для Visual Studio, содержащем 30 + проекты.

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

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

9
задан Mark Heath 6 October 2008 в 08:56
поделиться

4 ответа

Отвечать на Ваш первый вопрос:

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

Ответить на Вашу секунду:

Можно использовать категории и [Explicit] и [Ignore] атрибут для сообщения NUnit, который тестирует для выполнения, и который тестирует Вас, должен сказать этому работать, прежде чем он будет. Вы могли бы также хотеть посмотреть на [Platform] или некоторые из других атрибутов, в зависимости от того, каковы точно Ваши требования к 'среде'.

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

6
ответ дан 4 December 2019 в 21:13
поделиться

Для Вашего случая я подавил бы его к нескольким опциям:

  • Консолидируйте свои существующие проекты к меньшему количеству, следовательно, консолидировав соответствующие тестовые проекты для них - Попытка думать, нужны ли Вам действительно 30 проектов (например, 30 блоков) или если лучше просто объединить их для упрощения количества зависимостей и время изготовления.

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

  • Объедините все модульные тесты в несколько проектов - Если Вы являетесь непреклонными по отношению к содержанию в чистоте каждого блока и отдельными, можно просто решить объединить все модульные тесты, вероятно, с точки зрения уместности друг с другом.

Следовательно, Вы могли также сделать конфигурации решения, которые не включают модульные тесты - если время изготовления является большой частью беспокойства Вам. Это особенно полезно, если Вы просто запускаете тесты по требованию. При использовании непрерывной интеграции это не должна быть проблема: у Вас может быть несколько конфигураций CI, некоторые, которые включают тесты здания, некоторые, которые не делают.

3
ответ дан 4 December 2019 в 21:13
поделиться

Так же, как в стороне, мы находим TestDriven. Сеть, чтобы быть превосходным дополнительным фронтэндом VisualStudio для NUnit, свободного для использования с открытым исходным кодом / студенты.

0
ответ дан 4 December 2019 в 21:13
поделиться

Это большой вопрос и ставит некоторые вопросы, что я имею об управлении большим набором модульных тестов на длительные, крупные проекты.

Моя стратегия состоит в том, чтобы иметь один проект модульного теста для каждого проекта в Вашем решении, которое является бизнесом или связанной платформой. Модульные тесты плохо подходят для тестирования аспектов UI проекта, и я обычно оставляю это тестированию scipted. Проект разрабатывается с помощью сервера непрерывной интеграции (CI), который запущен каждый раз, когда разработчик фиксирует блок работы. Сервер CI также выполняет весь модульный тест также статистика тестового покрытия электростанции. Среда CI использует MSBuild для создания решения.

Со временем это стоит оценить, необходимы ли все Ваши модульные тесты. Большое усилие по регрессионному тестированию сместится к тестированию по сценарию, и издержки поддержания модульных тестов могут быть дорогостоящими. Идеально я хотел бы, чтобы все модульные тесты сохранялись по сроку действия проекта, но обслуживание наверху может иногда препятствовать. Как показывает опыт, модульные тесты сохраняются для бизнес-правил и концепции решений, но не для UI, создания отчетов или рабочего процесса. Очевидно, это будет зависеть от подробных сведений Вашего проекта.

1
ответ дан 4 December 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: