因此{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
是Test Fixture参数的ToString()
结果,NUnit将其包含在测试用例的全名中。
但是,似乎没有办法在--test-name-format
命令行参数中提供它。
还是我错了,有办法吗?
说明
我不想更改测试的全名,而只是更改其名称。我的问题是使用TestFixtureSource
的灯具下的测试名称。实际上,假设固定装置名称为F
,其下的测试为T1
和T2
,并且固定装置使用参数A1
和A2
调用了两次。默认的测试名称模式为{m}{a}
,但是{a}
不包括灯具参数。因此,测试报告会显示以下测试名称(不是全名):
T1
T2
T1
T2
这是它在Azure DevOps测试中的显示方式(发布测试插件在发布结果时使用测试名称)
我想将名称更改为等于全名,因为全名是:
F(A1).T1
F(A1).T2
F(A2).T1
F(A2).T2
我意识到,如果名称为F(A1).T1
,则全名将为F(A1).F(A1).T1
,但是由于UI不显示全名,因此我可以接受。
答案 0 :(得分:1)
测试用例的全名始终是附加到所包含类的全名的名称(默认值或由您设置)。无法改变这一点。
更新:根据您的澄清,您希望测试用例名称包括传递给特定灯具实例的参数。使用当前的“静态”设计,这也是不可能的。
[此处以特殊的NUnit-y方式使用“静态”和“动态”。从某种意义上说,所有这些都是动态的,因为它是在执行运行程序时发生的。但是,我们用它来表示“由加载(创建,发现)测试时确定”,而不是“由每次测试执行时确定”。]
在发现(并命名)测试时,尚未实例化没有固定装置。运行TestCaseSource
方法的代码正在生成要用于测试装置的每个实例的测试名称。我们本可以做不同的事情,但是...好吧,我们没有这么做,因为没人想到这个用例。
对不起!
PS:存在一个长期存在的NUnit问题,要求创建(称为“动态”)测试用例,该用例可以轻松包含您所要求的功能。