как MSTest определяет порядок запуска тестовых методов? - PullRequest
19 голосов
/ 13 февраля 2010

edit: note, вопрос 288805 похож, однако я специально спрашиваю, как MSTest выбирает по умолчанию тестовый заказ Пожалуйста, посмотрите остальную часть этого вопроса. Спасибо Эйлон за ссылку .

Я смотрел на устаревший проект MSTest. Тесты всегда выполнялись в одном и том же порядке. Заказ не был алфавитным и подпрыгивал между методами в двух * .cs TestMethod файлах.

Я не изменил физический порядок наследства код. Я сделал для моего удобства добавление "MSTest01" к имени метода первого теста, "MSTest02" к Имя метода второго теста и т. д.

К моему удивлению, порядок выполнения TestMethod функции изменены; # 3 первое, # 6 второе, # 5 третье, и так далее.

Когда я удалил строки "MSTestnn" из Имена функций TestMethod, порядок их выполнения вернулся к предыдущему порядку, т.е. один тест из первого файла .cs, два теста из второй файл .cs, пять тестов из первого Файл .cs, и так далее.

Кажется, что местоположение файла не может быть фактором в то время как имя функции TestMethod может быть фактором.

ВОПРОС: кто-нибудь может объяснить, как MSTest определяет порядок выполнения функций TestMethod?

Ответы [ 3 ]

7 голосов
/ 10 февраля 2012

Я полагаю, что MSTest выполняет методы тестирования, упорядочивая их по их «идентификатору» (кажется, это их полное пространство имен).

Я создал TestProject1, который содержит 4 теста unt (UnitTest1, ... 2, ... A, ... B). Каждый модульный тест содержит 5 методов тестирования (TestMethodA, ... B, ... 1, ... 2, ... 3). Они были объявлены в случайном порядке в своих тестовых классах. Теперь каждый раз, когда я запускаю MSTest, тесты выполняются в одном и том же порядке:

TestProject1.UnitTest1.TestMethod1
TestProject1.UnitTest1.TestMethod2
TestProject1.UnitTest1.TestMethod3
TestProject1.UnitTest1.TestMethodA
TestProject1.UnitTest1.TestMethodB
TestProject1.UnitTest2.TestMethod1
TestProject1.UnitTest2.TestMethod2
TestProject1.UnitTest2.TestMethod3
TestProject1.UnitTest2.TestMethodA
TestProject1.UnitTest2.TestMethodB
TestProject1.UnitTestA.TestMethod1
TestProject1.UnitTestA.TestMethod2
TestProject1.UnitTestA.TestMethod3
TestProject1.UnitTestA.TestMethodA
TestProject1.UnitTestA.TestMethodB
TestProject1.UnitTestB.TestMethod1
TestProject1.UnitTestB.TestMethod2
TestProject1.UnitTestB.TestMethod3
TestProject1.UnitTestB.TestMethodA
TestProject1.UnitTestB.TestMethodB

Единственный способ изменить этот порядок - переименовать один TestClass или TestMethod. Например, если я переименую TestMethodB для UnitTest1 в TestMethod4, он будет выполнен до TestMethodA.

Чтобы увидеть идентификаторы ваших методов тестирования, откройте окно «Тестовое представление» из VS и затем щелкните правой кнопкой мыши заголовок столбца (например, Имя теста) -> «Добавить / удалить столбцы ...» и добавьте «ID» колонка.

6 голосов
/ 10 июля 2014

MSDN говорит; -)

Как: создать заказной тест

http://msdn.microsoft.com/en-us/library/ms182631.aspx

Параметры командной строки MSTest.exe

http://msdn.microsoft.com/en-us/library/ms182489(v=vs.120).aspx

3 голосов
/ 12 марта 2017

Что касается порядка исполнения VSTest. Вот как это организовано в вашем TestProject:

  1. Сортировка cs-файлов в вашем проекте по времени CREATION ASC
  2. Метод Положение в каждом файле
  3. UnitTest1.cs - создан 01.01.1970 с методами TestMethod05 и TestMethod03
  4. UnitTest2.cs - создан 01.05.1970 с методом TestMethod02.
  5. UnitTest3.cs - создан 01.03.1970 с методом TestMethod01.
...