Запустите юнит-тест C #, только если другой пройден - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь запустить UnitTest в C #, но только если пройдет другой UnitTest?Не могу заставить его работать, кто-нибудь знает, как я могу это сделать?

Редактировать: Это в NUnit

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

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

В рамках тестирования существовал

  • Шаблон для каждого типа теста & aуниверсальный шаблон для агрегирования всех тестов
  • Утилита для выполнения каждого типа шаблона

Например, если бы я выполнял интеграционный тест, у меня была бы «утилита http» ишаблон будет содержать конечную точку и полезную нагрузку.

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

Вот тут-то все и становится сложно ... Используя какой-нибудь необычный шаблон T4, я бы получил данные json и сериализовал их в список шаблонов.Затем я упорядочил бы тесты по порядку выполнения и зависимости (один тест мог зависеть от другого для объединения интеграционных тестов).Затем я бы сгенерировал юнит-тест для каждого шаблона.Затем сгенерированные модульные тесты будут выполняться при сборке

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

static List<ITestTemplate> requiredTests = new List<ITestTemplate>();
...
if(requiredTests.Any(t => t.Failed))
  Assert.IsTrue(false) //fail subsequent tests
0 голосов
/ 28 ноября 2018

Вы можете сделать это, хотя это может быть не самым чистым решением, используя атрибут [Order ()].( docs )

Это позволит вам запустить тест зависимостей как [Order (1)], а тест, основанный на первом тесте, как [Order (2)].Вы можете предоставить общий доступ к своему драйверу во всех тестах, и, если первый тест не пройден, закрыть драйвер, что приведет к сбою других тестов, основанных на прохождении первого теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...