测试夹具参数的 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,它下面的测试是 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 没有显示全名,所以我可以接受.

测试用例的全名始终是附加到包含class的全名的名称(默认或您设置)。没有办法改变这个。

更新:根据您的说明,您希望测试用例名称包含传递给特定夹具实例的参数。这也是不可能的,用现在的"static"设计

[在这里以特殊的 NUnit-y 方式使用 "static" 和 "dynamic"。从某种意义上说,所有这些都是动态的,因为它会在您执行跑步者时发生。但我们用它来表示 "predetermined when the test is loaded (created, discovered) as opposed to " 在每次测试执行时确定。”]

在发现(并命名)您的测试时尚未实例化任何固定装置。运行您的 TestCaseSource 方法的代码正在生成用于 each 测试夹具实例的测试名称。我们本可以采取不同的方式,但是......好吧,我们没有这样做,因为没有人想到这个用例。

对不起!

PS:有一个长期存在的 NUnit 问题要求创建(我们称之为)"dynamic" 测试用例,它可以很容易地包含您要求的功能。