Как MSTest определяет порядок запуска тестовых методов?
изменить: примечание, вопрос 288805 похож, однако я специально спрашиваю, как MSTest выбирает стандартный порядок тестирования. Пожалуйста, ознакомьтесь с остальной частью этого вопроса. Спасибо Эйлону за ссылку.
Я смотрел старый проект MSTest.
Тесты всегда выполнялись в том же порядке.
Заказ не был алфавитным и подпрыгивал
между методами в двух файлах *.cs TestMethod.
Я не изменил физический порядок наследия
код. Я сделал для своего удобства добавление "MSTest01"
к имени метода первого теста, "MSTest02" к
имя метода второго теста и т.д.
К моему удивлению, порядок выполнения TestMethod
функции изменены; # 3 во-первых, # 6 секунд, №5 третья,
и т.д.
Когда я удалил строки "MSTestnn" из
Имена функций TestMethod, порядок их выполнения
изменен назад на предыдущий порядок, т.е.
один тест из первого файла .cs, два теста из
второй файл .cs, пять тестов с первого
.cs и т.д.
Кажется, что местоположение файла не может быть фактором
в то время как имя функции TestMethod может быть фактором.
ВОПРОС: может ли кто-нибудь объяснить, как MSTest принимает решение о порядке выполнения функций TestMethod?
Ответы
Ответ 1
Я считаю, что MSTest выполняет методы тестирования, упорядочивая их по их "идентификатору" (как представляется, их полное пространство имен).
Я создал TestProject1, который содержит 4 теста (UnitTest1,... 2,... A,... B). Каждый unit test содержит 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.
Чтобы увидеть идентификаторы ваших методов тестирования, откройте окно "Test View" из VS, а затем щелкните правой кнопкой мыши заголовок столбца (например, имя теста) → "Добавить/удалить столбцы..." и добавьте "ID" столбец.
Ответ 2
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
Как для порядка выполнения VSTest. Вот как он организован в тестовом проекте:
- Сортировка cs файлов в вашем проекте по времени CREATION ASC
- Позиция метода в каждом файле
Например, у вас есть 3 cs файла в проекте.
- UnitTest1.cs - создан 01.01.1970 с помощью методов TestMethod05 и TestMethod03
- UnitTest2.cs - создан 05/01/1970 с помощью метода TestMethod02.
- UnitTest3.cs - создан 03/01/1970 с помощью метода TestMethod01.
Тогда порядок выполнения теста таков:
TestProject1.UnitTest1.TestMethod05
TestProject1.UnitTest1.TestMethod03
TestProject1.UnitTest3.TestMethod01
TestProject1.UnitTest2.TestMethod02
Вы можете увидеть "порядок по умолчанию", используя команду:
vstest.console.exe TestProject1.dll/ListTests