Что такое шаблон имени теста NUnit для аргументов тестового прибора? - PullRequest
0 голосов
/ 02 февраля 2019

То есть {a} относится к аргументам тестового примера, но в полном имени тестового примера мы можем видеть аргументы тестового набора.Например:

C:\DFDeploymentSmokeTests\LocalTestProfiles> $xml = [xml](cat ..\TestResults\CSTests.xml)
C:\DFDeploymentSmokeTests\LocalTestProfiles> $TestCase = $xml.SelectSingleNode('//test-case')
C:\DFDeploymentSmokeTests\LocalTestProfiles> $TestCase.name
SiteCheck
C:\DFDeploymentSmokeTests\LocalTestProfiles> $TestCase.fullname
Web.ForEachWebServer(nan4dfc1app01_10.192.78.221_smoketest.dayforce.com).SiteCheck
C:\DFDeploymentSmokeTests\LocalTestProfiles>

nan4dfc1app01_10.192.78.221_smoketest.dayforce.com - это результат ToString() аргумента Test Fixture, и NUnit включает его в полное имя тестового случая.

Однакокажется, это способ указать это в параметре командной строки --test-name-format.

Или я не прав, и есть способ?

Разъяснение

Я не хочу менять полное название теста, а просто его название.Моя проблема с именами тестов под прибором, используя TestFixtureSource.Действительно, предположим, что имя прибора - F, тесты по нему - T1 и T2, и прибор вызывается дважды с аргументами A1 и A2.Шаблон имени теста по умолчанию - {m}{a}, но {a} не включает параметры прибора.Итак, в отчете о тестировании отображаются следующие имена тестов (не полные имена):

T1 
T2 
T1
T2

Вот как это показано в тестах AzOr DevOps (плагин Publish Tests использует имена тестов при публикации результатов)

Я хочу изменить имя на полное имя, потому что полные имена:

F(A1).T1
F(A1).T2
F(A2).T1
F(A2).T2

Я понимаю, что если имя будет F(A1).T1, то полное имя будетбыть F(A1).F(A1).T1, но, поскольку пользовательский интерфейс не показывает полные имена, я могу жить с этим.

1 Ответ

0 голосов
/ 02 февраля 2019

Полное имя тестового примера - это всегда имя (по умолчанию или заданное вами), добавляемое к полному имени содержащего класса.Изменить это невозможно.

ОБНОВЛЕНИЕ: Исходя из вашего пояснения, вы хотите, чтобы имя тестового примера включало параметры, передаваемые конкретному экземпляру прибора.Это также невозможно, используя текущий «статический» дизайн.

[Используя «статический» и «динамический» специальным NUnit-y способом здесь.В некотором смысле, все это динамично, так как это происходит, когда вы запускаете бегуна.Но мы используем его для обозначения «предопределено, когда тест загружается (создается, обнаруживается), а не« определяется при каждом выполнении теста ».]

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

Извините!

PS: существует давняя проблема NUnit, призывающая к созданию (что мы называем) "динамические тесты, которые могут легко включать запрашиваемую вами функцию.

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