Задача Azure Devops Visual Studio Tests не может обнаружить Nunit-тесты с атрибутом TestCaseSource - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь использовать атрибут [TestCaseSource] из Nunit с моими автоматическими тестами, запускаемыми из Azure DevOps.

Пример: этот тест не обнаружен

public static object[] TestSource = new[]
{
    new[] { new MyType() },
    new[] { new MyType() },
    new[] { new MyType() }
};
[Test, TestCaseSource("TestSource")]
public void MyTestMethod(MyType value)
{
    ...
}

К сожалению, мои методы тестирования не могут быть выполнены из-за " На тестовом компьютере не найдены тестовые сборкисоответствующие критерии фильтра источника или тесты не найдены соответствующие критерии фильтра теста. Убедитесь, что на машине присутствуют тестовые сборки и критерии фильтра теста верны."ошибка.

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

Пример: этот тест обнаружен

[Test]
public void MyTestMethod()
{
    ...
}

Я полагаю, что я настроил что-то неправильно в релизе, и что это должно работать, так как методы теста [TestCaseSource] работают нормально, когдаЯ запускаю тесты из Visual Studios Test Explorer.

Мой конвейер выпуска DevOps довольно прост, я используюизвлечение файлов с помощью шаблонов архивных файлов, таких как " $ (System.DefaultWorkingDirectory) /SolutionName/drop/SolutionName.Tests.zip" и целевой папки " $ (System.DefaultWorkingDirectory) / tests "

, тогда у меня есть задание Visual Studio Test (2.), которое выбирает тестирование при выполнении теста и папку поиска" $ (System.DefaultWorkingDirectory) / tests"

Мое предположение заключается в том, что, возможно, мне нужно установить поле " Путь к пользовательским тестовым адаптерам " в тестовой задаче Visual Studio для пакета NUnit3Adapter Nuget в моем тестовом проекте, но я не уверен, где/ как получить путь к нему.

Нужно ли мне изменить свой конвейер, чтобы включить NUnit3Adapter, или есть другая причина, по которой мои тесты не обнаруживаются? Я много раз искал причину, и, насколько я могу судить, ни у кого больше нет этой проблемы с [TestCaseSource], что наводит меня на мысль, что я сделал что-то не так.

Обновление:

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

Когда я связываю свои методы тестирования в Visual Studio Test Explorer с тестовыми примерами Azure DevOps для связанной автоматизации, имя метода теста задается неправильно.

Пример: с учетом этого метода тестирования до

public static object[] TestSource = new[]
{
    new[] { new MyType() },
    new[] { new MyType() },
    new[] { new MyType() }
};
[Test, TestCaseSource("TestSource")]
public void MyTestMethod(MyType value)
{
    ...
}

Если я связываю MyTestMethod с рабочим элементом, «имя автоматизированного теста»«Поле в DevOps будет показывать« SolutionName.Tests.MyTestMethod »в качестве значения.

вы можете увидеть здесь

Однако я считаю, что этоневерно, и вместо этого имя должно быть « SolutionName.Tests.MyTestMethod (MyType) »

Я думаю, что это так, потому что в какой-то момент я каким-то образом связал один из моих тестов, таких как «SolutionName». Tests.MyTestMethod (MyType) "и все работало нормально.

Теперь у меня вопрос: как заставить функцию" связать тестовый случай "включить (MyType) в конценазвание метода тестирования?

1 Ответ

0 голосов
/ 30 октября 2019

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

Фактически конечный результат был, так как мое обновление указывало, что функция «Связать с тестовым набором» в Visual Studio Test Explorer не заполняла «Автоматизированное имя теста», как я ожидал.

Пример: без параметров

"SolutionName.Tests.MyTestMethod"

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

Только после того, как часть параметра имени метода теста будет правильно отображаться в поле "Имя автоматизированного теста" в AzOv DevOps.

Пример: с параметрами

"SolutionName.Tests.MyTestMethod(MyType)"

Как только я это сделал, все мои тесты были обнаружены и правильно выполнены на моем агенте.

Я не уверен, является ли это преднамеренным поведением или нет. Ни один из моих поисков не вернул это как предполагаемый пользовательский опыт. Тем не менее, это сработало для меня.

Примечание

Хотя это работает, я не вижу каждого отдельного результата теста для каждой итерации объекта [] в лазуриDev-OPS. Либо это ошибка, либо то, что я пытаюсь сделать, не было предполагаемым поведением. Тем не менее, кроме того, у меня все работает.

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