我尝试将Nunit的[TestCaseSource]属性与从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()
{
...
}
我认为我在发行版中设置了一些错误,并且应该可以正常工作,因为从Visual Studios Test Explorer运行测试时,[TestCaseSource]测试方法可以正常工作。
>我的DevOps发布管道非常简单,我使用带有“ $(System.DefaultWorkingDirectory)/SolutionName/drop/SolutionName.Tests.zip ”等存档文件模式的解压缩文件任务“ $(System.DefaultWorkingDirectory)/ tests ”的目标文件夹
然后我有一个Visual Studio Test任务(2.),它通过“测试运行”选择测试,并搜索“ $(System.DefaultWorkingDirectory)/ tests ”文件夹
我的最佳猜测是,也许我需要将Visual Studio Test任务的“ 自定义测试适配器的路径”字段设置为我的测试项目中的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)?
答案 0 :(得分:0)
似乎我找到了自己的问题的答案,经过进一步的尝试和错误,我设法使一切正常。
有效地,最终结果是,因为我的更新指定Visual Studio Test Explorer的“与测试用例关联”功能没有按我期望的那样填写“自动测试名称”。
示例:不带参数
"SolutionName.Tests.MyTestMethod"
但是最终我发现您必须先在本地执行测试。然后,在测试结果通过之后,将其关联到预期的测试用例。
只有在之后,测试方法名称的参数部分才能正确显示在Azure DevOps“自动测试名称”字段中。
示例:带有参数
"SolutionName.Tests.MyTestMethod(MyType)"
一旦执行完所有这些测试,我的代理就会被发现并正确执行。
我不确定这是否是故意行为。我的搜索都没有将此作为预期的用户体验返回。从来没有减少它为我工作。
注意
尽管这行得通,但是我在Azure开发人员中看不到object []每次迭代的每个测试结果。那是一个错误,还是我试图做的不是预期的行为。除此之外,一切都对我有用。