在VS Test Explorer中更改参数化NUnit的测试名称

时间:2019-02-14 15:27:39

标签: c# visual-studio nunit test-explorer

我正在尝试使用NUnit集成NUnit参数化的跨浏览器测试。我希望测试显示在“测试资源管理器”窗口中,这是使用NUnit3TestAdaptor完成的,但是无法区分不同的测试。这是我班上当前TestFixture属性的一个示例(下面的this示例):

namespace Demo
{
    [TestFixture("Chrome", "72", "Windows 10", "", "")]
    [TestFixture("safari", "12.0", "iOS", "iPhone 8 Simulator", "portrait")]
    public class UNitTests
    {
        [Test]
        public void NUnitTestOne()
        {
            // Test Stuff
        }

        [Test]
        public void NUnitTestOne()
        {
            // Test Stuff
        }
}

这是测试在“测试资源管理器”中的显示方式:

-> Demo.UNitTests.NUnitTestOne
       NUnitTestOne
       NUnitTestOne
-> Demo.UNitTests.NUnitTestTwo
       NUnitTestTwo
       NUnitTestTwo

问题是我无法知道哪个NUnitTestOne是Chrome测试还是iPhone测试。这就是我希望在测试浏览器中看到的(或类似的东西)

-> NUnitTestOne
       Chrome
       iPhone
-> NUnitTestTwo
       Chrome
       iPhone

理想情况下,像这样的东西会很完美:

[TestFixture("Chrome", "72", "Windows 10", "", ""), Name("Chrome")]
[TestFixture("safari", "12.0", "iOS", "iPhone 8 Simulator", "portrait"), Name("iPhone")]

但是我可能只是在做梦。有什么办法可以满足我的需求?谢谢!

编辑:

使用TestName =“ Chrome”时,测试资源管理器会执行以下操作:

   NUnitTestOne
   NUnitTestOne
   NUnitTestTwo
   NUnitTestTwo
-> Demo.UNitTests.NUnitTestOne
       NUnitTestOne
       NUnitTestOne
-> Demo.UNitTests.NUnitTestTwo
       NUnitTestTwo
       NUnitTestTwo

哪个...很奇怪。

再次编辑:

使用类别,它起作用了!这就是测试浏览器中的内容:

-> Chrome
       NUnitTestOne
       NUnitTestTwo
-> iPhone
       NUnitTestOne
       NUnitTestTwo

1 个答案:

答案 0 :(得分:1)

您与Name("Chrome")关系密切。相反,您要在TestFixture属性中设置的属性是TestName

[TestFixture("Chrome", "72", "Windows 10", "", "", TestName = "Chrome")]
[TestFixture("safari", "12.0", "iOS", "iPhone 8 Simulator", "portrait", TestName = "iPhone")]

您可以看到该属性here上所有其他可用的属性。