测试治具参数的NUnit测试名称模板是什么?

时间:2019-02-02 04:20:47

标签: nunit

因此{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,其下的测试为T1T2,并且固定装置使用参数A1A2调用了两次。默认的测试名称模式为{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不显示全名,因此我可以接受。

1 个答案:

答案 0 :(得分:1)

测试用例的全名始终是附加到所包含类的全名的名称(默认值或由您设置)。无法改变这一点。

更新:根据您的澄清,您希望测试用例名称包括传递给特定灯具实例的参数。使用当前的“静态”设计,这也是不可能的。

[此处以特殊的NUnit-y方式使用“静态”和“动态”。从某种意义上说,所有这些都是动态的,因为它是在执行运行程序时发生的。但是,我们用它来表示“由加载(创建,发现)测试时确定”,而不是“由每次测试执行时确定”。]

在发现(并命名)测试时,尚未实例化没有固定装置。运行TestCaseSource方法的代码正在生成要用于测试装置的每个实例的测试名称。我们本可以做不同的事情,但是...好吧,我们没有这么做,因为没人想到这个用例。

对不起!

PS:存在一个长期存在的NUnit问题,要求创建(称为“动态”)测试用例,该用例可以轻松包含您所要求的功能。