Testing NUnit-相同名称的多个属性?链接到需求

Testing NUnit-相同名称的多个属性?链接到需求,testing,nunit,visual-studio-2013,system-testing,Testing,Nunit,Visual Studio 2013,System Testing,我将所有系统测试与测试用例和需求联系起来。每个需求都有一个ID。每个测试用例/系统测试各种需求。每个代码模块都链接到多个需求 我正试图找到最好的方法,将每个系统测试与其驾驶要求联系起来 我希望做一些类似的事情: [NUnit.Framework.Property("Release", "6.0.0")] [NUnit.Framework.Property("Requirement", "FR50082")] [NUnit.Framework.Property("Requi

我将所有系统测试与测试用例和需求联系起来。每个需求都有一个ID。每个测试用例/系统测试各种需求。每个代码模块都链接到多个需求

我正试图找到最好的方法,将每个系统测试与其驾驶要求联系起来

我希望做一些类似的事情:

    [NUnit.Framework.Property("Release", "6.0.0")]
    [NUnit.Framework.Property("Requirement", "FR50082")]
    [NUnit.Framework.Property("Requirement", "FR50084")]
    [NUnit.Framework.Property("Requirement", "FR50085")]
    [TestCase(....)]
    public void TestSomething(string a, string b...)
然而,这将中断,因为属性是一个键值对。系统不允许我使用同一密钥拥有多个属性

我希望这样做的原因是,如果某个模块的更改涉及到这些需求,则能够测试系统中的特定需求

这将允许我们根据对代码所做的更改确定要测试的内容,而不是在每个构建上运行1000多个系统测试

一些系统测试运行时间超过5分钟(企业医疗保健系统),因此“只运行所有测试”不是可行的解决方案。我们会这样做,但只是在通过我们的环境进行推广之前

想法?

您是否考虑过从
NUnit.Framework.Property
派生的

通过将语言设置为C#程序并添加对
nunit.framework.dll
(版本2.4.8)的引用的“查询”判断,以下内容似乎对您有用:


出于某种原因,我无法将谷歌讨论帖子的链接添加到上面的评论中,所以我也在这里添加了该帖子。(链接为)

  • 类别在TE中始终显示为“Category[xxxxxxx]”,其中xxxxx是您发送的任何字符串,如果您没有指定任何字符串,它将是从CategoryAttribute派生的类的名称

  • 如果你想使用Category,正如Charlie在谷歌帖子上所说的,你应该在每个需求中使用一个条目。如果将字符串要求添加到值中,看起来会很不错,但大多数情况下都遵循上面(1)中的规则,可能如下所示:

  • 类别[要求:FR12345]

    代码:

  • 如果希望它显示为:Requirement[FR12345],则必须使用属性,但不能有多个键,因此每个测试只能有一个这样的键
  • 代码:

    4:如果您希望每个测试有多个需求,并且仍然有(3)中的显示,那么必须使键唯一。它不需要看起来太糟糕。在下面的代码中,我刚刚添加了一个计数器。 它将显示为:

    要求-1[FR12345]

    要求-2[FR23456]

    代码:

    你使用它就像:

     [Requirement(new[] { "1234", "2345" })]
       [Test]
       public void Test()
       { }
    
    (如果您想要一个不带“new”的语法,那么前面的答案将显示带有参数的语法。)

    选项4不会按需求编号分组,而是按计数器分组。如果您想按需求编号分组,可以使用选项5:

    五,。 将需求编号添加到键中,但将值留空。 它看起来像:

    要求-FR12345

    这样,您也可以跳过前缀,并在TE中将每个需求作为自己的类别

    代码:


    当然,您也可以完全跳过前缀。

    更性感的是:使用
    公共需求属性(params string[]requirements)
    您可以编写
    [需求(“FR50082”、“FR50084”)]
    @DioF:同意。谢谢你那一匙糖!J0e,我试过了,但在测试浏览器中,它显示了[String]与字符串中的值的要求-有什么想法可以纠正吗?NUnit google讨论组上也有同样的问题,我在那里发布了一些不同选项的代码示例。
    public class RequirementAttribute : CategoryAttribute
    {
        public RequirementAttribute(string s)
            : base("Requirement:" + s)
        { }
    }
    
    public class RequirementAttribute : PropertyAttribute
    {
        public RequirementAttribute(string s)
            : base(s)
        {}
    }
    
     public class RequirementAttribute : PropertyAttribute
        {
           public RequirementAttribute(string[] array)
           {
               int i = 0;
               foreach (var s in array)
               {
                   Properties.Add("Requirement-" + i, s);
                   i++;
               }
           }
        }
    
     [Requirement(new[] { "1234", "2345" })]
       [Test]
       public void Test()
       { }
    
    public class RequirementAttribute : PropertyAttribute
    {
        public RequirementAttribute(string[] array)
        {
            foreach (var s in array)
            {
                Properties.Add("Requirement-" +  s,"");
            }
        }
    }