由于某种原因,我无法将指向谷歌讨论帖子的链接添加到上面的评论中,所以我也在这里添加了帖子。(链接是https://groups.google.com/forum/#!topic/nunit-discuss/ndV3VTPndck)
Category 在 TE 中始终显示为“Category [xxxxxxx]”,其中 xxxxx 是您发送的任何字符串,如果您不指定任何字符串,它将是从 CategoryAttribute 派生的类的名称。
如果你想使用类别,你应该,正如查理在谷歌帖子上所说,每个要求使用一个条目。如果将字符串 Requirement 添加到 value 中,它看起来会很不错,但大多数遵循上面 (1) 中的规则,它可能是这样的:
类别[要求:FR12345]
代码:
public class RequirementAttribute : CategoryAttribute
{
public RequirementAttribute(string s)
: base("Requirement:" + s)
{ }
}
- 如果你希望它显示为:Requirement[FR12345],那么你必须使用一个属性,但你不能有多个键,所以每次测试只有一个这样的键。
代码:
public class RequirementAttribute : PropertyAttribute
{
public RequirementAttribute(string s)
: base(s)
{}
}
4:如果您希望每次测试有多个要求,并且仍然有类似(3)中的显示,则必须使键唯一。它不需要看起来太糟糕。在下面的代码中,我刚刚添加了一个计数器。它将显示为:
要求 1[FR12345]
要求 2[FR23456]
代码:
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()
{ }
(如果您想要一个没有“新”的语法,前面的答案会显示带有参数的语法。)
选项 4 不会按要求编号分组,而是按计数器分组。如果要按要求编号分组,可以使用选项 5:
5. 将需求编号添加到键中,但将值留空。它看起来像:
要求-FR12345
这样,您也可以跳过前缀,并将每个需求作为其自己的类别在 TE 中。
代码:
public class RequirementAttribute : PropertyAttribute
{
public RequirementAttribute(string[] array)
{
foreach (var s in array)
{
Properties.Add("Requirement-" + s,"");
}
}
}
而且,您当然也可以完全跳过前缀。