Как NUnit (и MSTest) обрабатывает тесты, которые изменяют статические / общие переменные?

StackOverflow https://stackoverflow.com/questions/154180

Вопрос

У меня есть некоторый код, который использует шаблон общего шлюза для реализации инверсии контейнера управления.У меня есть несколько сотен модульных тестов NUnit, которые отрабатывают код, использующий этот IOC.Все они работают (на моей машине!) но я обеспокоен тем, что эти тесты могут завершиться неудачно под нагрузкой.Кажется, я помню, что NUnit (и MSTest) пытаются запускать тесты параллельно в нескольких потоках (что определенно вызвало бы условия гонки на статическом / общем шлюзе), но я не могу найти никакой документации, в которой говорится, что происходит на самом деле.Мой опыт показывает, что NUnit, похоже, выполняет тесты последовательно.Мой вопрос в том, запускает ли NUnit (или MSTest) когда-либо модульные тесты параллельно?Если да, то при каких условиях?И могу ли я отключить это с помощью какой-либо опции конфигурации?

Это было полезно?

Решение

Обновить:

В Visual Studio 2010 появилась возможность параллельного запуска тестов.

Вот такой пошаговая статья о том, как это включить.

МсТест:
Итак, по словам Дэвида Уильямсона из Microsoft Visual Studio Team System, на этот пост на форумах MSDN:

Тесты абсолютно НЕ выполняются параллельно при запуске в VS или через mstest.exe.Если они запускаются в нагрузочном тестировании через VS, то это другая история.Базовое выполнение, однако, всегда является последовательным.

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

НАнит:
NUnit запускает все тесты в одном потоке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top