测试夹具参数的 NUnit 测试名称模板是什么?
What is the NUnit test name template for the test fixture arguments?
所以{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 没有显示全名,所以我可以接受.
测试用例的全名始终是附加到包含class的全名的名称(默认或您设置)。没有办法改变这个。
更新:根据您的说明,您希望测试用例名称包含传递给特定夹具实例的参数。这也是不可能的,用现在的"static"设计
[在这里以特殊的 NUnit-y 方式使用 "static" 和 "dynamic"。从某种意义上说,所有这些都是动态的,因为它会在您执行跑步者时发生。但我们用它来表示 "predetermined when the test is loaded (created, discovered) as opposed to " 在每次测试执行时确定。”]
在发现(并命名)您的测试时尚未实例化任何固定装置。运行您的 TestCaseSource
方法的代码正在生成用于 each 测试夹具实例的测试名称。我们本可以采取不同的方式,但是......好吧,我们没有这样做,因为没有人想到这个用例。
对不起!
PS:有一个长期存在的 NUnit 问题要求创建(我们称之为)"dynamic" 测试用例,它可以很容易地包含您要求的功能。
所以{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 没有显示全名,所以我可以接受.
测试用例的全名始终是附加到包含class的全名的名称(默认或您设置)。没有办法改变这个。
更新:根据您的说明,您希望测试用例名称包含传递给特定夹具实例的参数。这也是不可能的,用现在的"static"设计
[在这里以特殊的 NUnit-y 方式使用 "static" 和 "dynamic"。从某种意义上说,所有这些都是动态的,因为它会在您执行跑步者时发生。但我们用它来表示 "predetermined when the test is loaded (created, discovered) as opposed to " 在每次测试执行时确定。”]
在发现(并命名)您的测试时尚未实例化任何固定装置。运行您的 TestCaseSource
方法的代码正在生成用于 each 测试夹具实例的测试名称。我们本可以采取不同的方式,但是......好吧,我们没有这样做,因为没有人想到这个用例。
对不起!
PS:有一个长期存在的 NUnit 问题要求创建(我们称之为)"dynamic" 测试用例,它可以很容易地包含您要求的功能。