Как определить, из какого значения TestCaseSource поступает? - PullRequest
0 голосов
/ 04 ноября 2019

Я использую несколько атрибутов TestCaseSource. Можно ли определить, какое значение поступает из какого источника?

Пример кода:

[TestCaseSource(CountryListA)]
[TestCaseSource(CountryListB)]
public void SomeTest(Country country){
   ...tests on country...
// access the source (either CountryListA or CountryListB)
}

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

1 Ответ

0 голосов
/ 04 ноября 2019

Краткий ответ: Нет. NUnit, фактически, разработан, чтобы сделать это невозможным. Тесты в основном не должны знать, откуда пришли их аргументы или кто их предоставил. Это важно в некоторых видах расширенных сценариев генерации тестов, а также для [Theory] тестов.

Общий подход к этой проблеме состоит в том, чтобы предпринять шаги, обеспечивающие уникальное имя ваших тестов. Любые дубликаты, будь то в одном и том же списке или между двумя списками, делают невозможным точное определение источника проблемы.

Ключевой вопрос заключается в том, являются ли явно повторяющиеся тесты истинными дубликатами. Вы не узнаете об этом, если только тип каждого возвращаемого аргумента не переопределяет ToString() таким образом, который позволяет определить точный случай. Например, если бы Country был классом без переопределения ToString, каждый экземпляр теста был бы назван как-то вроде SomeTest(<Country>). OTOH, это не будет проблемой, если Country является enum или если его ToString() переопределено уникальным способом.

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

  1. Поместите все тесты в абстрактный базовый класс.

  2. Извлеките два разных прибора из этой базы.

  3. Используйте CountryListA в одном из этих приборов и CountryListB в другом.

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

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