Я пытаюсь использовать атрибут [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) в конценазвание метода тестирования?