1

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

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
4

1 回答 1

1

你很亲密Name("Chrome")。相反,您要在属性中设置的TestFixture属性是TestName

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

您可以在此处查看该属性的所有其他可用属性。

于 2019-02-14T15:39:33.793 回答