Я столкнулся с этой проблемой некоторое время назад.Решение, которое я нашел, может быть не самым элегантным, но оно работает.Чтобы обойти проблему с заказом, я создал собственную структуру модульного тестирования.Это была принадлежность компании, в которой я работал, поэтому я не могу поделиться ею с вами.
В рамках тестирования существовал
- Шаблон для каждого типа теста & aуниверсальный шаблон для агрегирования всех тестов
- Утилита для выполнения каждого типа шаблона
Например, если бы я выполнял интеграционный тест, у меня была бы «утилита http» ишаблон будет содержать конечную точку и полезную нагрузку.
Тесты, которые я хочу выполнить, должны быть сохранены в промежуточной структуре данных, такой как json.Это позволило мне сериализовать тесты в шаблоны.
Вот тут-то все и становится сложно ... Используя какой-нибудь необычный шаблон T4, я бы получил данные json и сериализовал их в список шаблонов.Затем я упорядочил бы тесты по порядку выполнения и зависимости (один тест мог зависеть от другого для объединения интеграционных тестов).Затем я бы сгенерировал юнит-тест для каждого шаблона.Затем сгенерированные модульные тесты будут выполняться при сборке
. Если у вас есть вопрос об отмене выполнения теста в случае сбоя, вы можете встроить его в свои шаблоны, используя некоторую причудливую логику
static List<ITestTemplate> requiredTests = new List<ITestTemplate>();
...
if(requiredTests.Any(t => t.Failed))
Assert.IsTrue(false) //fail subsequent tests