Как MSTEST / Visual Studio 2008 Team Test определяет порядок выполнения метода тестирования?

У меня создалось впечатление, что методы тестирования в классе модульного тестирования будут выполняться в том порядке, в котором они появляются в файле класса. По-видимому, это не так. Кроме того, похоже, что он не основан исключительно на алфавитном порядке. Как MSTEST определяет порядок выполнения?

РЕДАКТИРОВАТЬ: Я смог найти ответ, немного покопавшись. Увидеть ниже.


person Daniel Auger    schedule 13.11.2008    source источник
comment
К вашему сведению: xUnit.net запускает тесты в случайном порядке, Ade Miller ademiller.com/blogs/tech/2007/11/   -  person gerryLowry    schedule 15.02.2010


Ответы (7)


Я смог найти ответ.

По словам сотрудника Microsoft Гильермо Серрато:

MSTest выполняет все тесты синхронно, порядок недетерминированный

person Daniel Auger    schedule 14.11.2008

Сортировка в тестовом представлении или в редакторе тестовых списков заставляет их выглядеть так, как будто вы контролируете их - это просто побочный продукт реализации. Мы не пытаемся выполнить их в определенном порядке (мы перебирали «разрешающий порядок» и «случайный порядок»).

Если вам действительно нужен порядок, то для этого и нужны заказанные тесты. Они доступны во всех выпусках, где доступен модульный тест - либо используйте меню Test / New Test, либо щелкните правой кнопкой мыши тестовый проект и создайте «заказанный тест».

person Dominic Hopton    schedule 14.02.2009

Все очень просто. Я использую это

C:> mstest /testcontainer:C:\MyTest.dll /resultsfile:C:\MyTestresults.xml

Логика здесь в том, что по умолчанию mstest предоставляет вам файл .trx. Поэтому в команде с параметром [/ resultfile:] напишите имя файла, указав расширение .xml. Поэтому я использовал /resultsfile:C:\MyTestresults.xml вместо /resultsfile:C:\MyTestresults.trx

У меня это отлично работает. Дайте мне знать, если это сработает для вас.

person Community    schedule 17.03.2009

По своему опыту (мне было немного сложно) я много думал о порядке изменения порядка выполнения методов в проекте MStest. Я попробую описать шаги.

  1. Убедитесь, что файлы .testrunconfig и .vsmdi по умолчанию удалены. Эти файлы создаются Visual Studio при создании тестового проекта.

  2. Закройте экземпляр Visual Studio и снова откройте его.

  3. Когда Visual Studio откроется, вы должны открыть Test List Edior, а затем создать свой собственный список в разделе Списки тестов. После создания нового списка тестов он должен быть пустым.

  4. Перейдите в раздел «Все загруженные тесты», затем перетащите любой тест во вновь созданный раздел тестов в выбранном порядке.

Затем убедитесь, что ваш последний созданный тестовый раздел отмечен, и вы можете нажать тестовый запуск, и он будет запущен с вашим определенным порядком.

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

Хороший замок

person fyasar    schedule 05.11.2009

Проблема: я хочу запускать только те веб-тесты, которые включены в заказанный мной тест. Я использую заказанный тест только для этой цели, поэтому я могу запускать свои веб-тесты в том порядке, в котором они мне нужны. У меня много веб-тестов, но мой заказанный тест содержит подмножество этих веб-тестов. , который я хотел бы запустить. Решение. Упорядоченный тест используется для запуска набора тестов в определенном порядке. Создайте список тестов Orderer в Visual Studio / тестовом проекте. В окне просмотра теста (Test | Windows | Test View) выберите OrderedTest и запустите его оттуда (вы можете щелкнуть его правой кнопкой мыши и выбрать «Выполнить выбор»). Ordertest автоматически запустит все ваши веб-тесты, которые в него включены.

Вы увидите результаты в окне результатов теста (Test | Windows | Test Results); дважды щелкните OrderedTest, и вы увидите подробные результаты для каждого из ваших веб-тестов. Вы можете дважды щелкнуть каждый веб-тест, и вы сможете увидеть подробные результаты для каждого из них.

person littleinstein    schedule 08.12.2011

Есть много способов заказать тесты в VS. Используйте тестовое представление и добавьте дополнительные столбцы и порядок. Я использую файлы VSMDI, и это запускает их в указанном в них порядке.

person Preet Sangha    schedule 14.11.2008

Не имеет значения, в каком порядке они выполняются ... если ваши тесты зависят от другого запущенного теста, ваши тесты ошибочны :-)

person Joel Martinez    schedule 13.11.2008
comment
Согласен, но как насчет сценария, когда вы пытаетесь отследить, какой тест не очищается после себя (в тесте, управляемом данными) - в этом случае поможет знание порядка выполнения - person Delaney; 19.02.2010
comment
Я знаю, что это не всегда возможно, у меня есть несколько тестовых программ, которые управляются данными таким образом. Но вам следует избегать подобных тестов, основанных на данных, любой ценой. Модульные тесты должны тестировать только модули. Тесты, управляемые данными, должны быть интеграционными тестами и запускаться с использованием какого-либо другого инструмента (например, не mstest или nunit), где вы можете контролировать порядок выполнения именно по той причине, которую вы описываете :-) - person Joel Martinez; 19.02.2010
comment
Согласитесь, это связано с тестированием CRM, где может быть сложно запускать тесты с «свежим» набором данных для каждого теста. Но что, если у меня есть 100 заказанных тестов, а с тестом № 93 возникла проблема ?! - person DevDave; 27.03.2013
comment
Вы всегда можете просто написать свою собственную среду тестирования, которая будет работать так, как вам нужно: PI написал мою собственную среду модульного тестирования, которую можно развернуть для запуска в целевой среде (т. Е. Я изначально написал ее для тестирования игр XNA на XBox), чтобы я мог элементы интеграционного тестирования, для которых требуется графическое устройство: github.com/joelmartinez/scurvy.test - person Joel Martinez; 27.03.2013