MSTest: порядок выполнения тестов в одном и том же TestClass - PullRequest
1 голос
/ 11 июня 2011

Мне нужно применить порядок TestClass при выполнении тестов с помощью MSTest.

Порядок TestClasses и тесты в каждом классе могут быть случайными, но MSTest не должен выбирать тест из другого TestClass, пока он не будет выполнен, выполняя ClassInitialize, все тесты в классе и ClassCleanup.

У меня есть глобальные AssemblyInitialize и AssemblyCleanup, поэтому следующее не работает, поскольку оно инициализирует сборку для каждого теста:


MSTest.exe /testcontainer:MyUnitTests.dll /resultsfile:report.trx /test:TestClass1 /test:TestClass2

1 Ответ

1 голос
/ 11 июня 2011

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

Что касается вашей проблемы с кодом на уровне сборки, то обходные пути для AssemblyInitialize и AssemblyCleanup могут быть следующими:

private int InitCount;

[AssemblyInitialize]
public static void Setup(TestContext context)
{
     if (InitCount++ == 0) {
         //Do Something
     }
}

[AssemblyCleanup]
public static void Teardown()
{
      if (--InitCount == 0) {
          //Do something
      }
}

По сути, вы можете заставить методы на уровне сборки запускаться только один раз.

...