Tags 当使用NUnit Console Runner和SpecFlow运行多个标记时,我会得到不正确的结果

Tags 当使用NUnit Console Runner和SpecFlow运行多个标记时,我会得到不正确的结果,tags,categories,specflow,nunit-console,Tags,Categories,Specflow,Nunit Console,这是我之前关于设置标记和设置这些标记中的变量的问题的后续: 我已经设置了一些变量来帮助填充NUnit测试,但是我发现当NUnit运行程序找到适合第一个标记的测试时,测试将使用第二个标记的设置来运行它。因为标签对我来说很重要,不仅要知道要运行什么测试,还要知道要使用什么变量,这就给我带来了问题 因此,如果我有以下标签: @首先 @first@second @第二 如果我跑@second,一切都很好。如果我运行@first,我会得到任何只有@first fine的场景,但是当我同时运行@first@

这是我之前关于设置标记和设置这些标记中的变量的问题的后续:

我已经设置了一些变量来帮助填充NUnit测试,但是我发现当NUnit运行程序找到适合第一个标记的测试时,测试将使用第二个标记的设置来运行它。因为标签对我来说很重要,不仅要知道要运行什么测试,还要知道要使用什么变量,这就给我带来了问题

因此,如果我有以下标签:

@首先

@first@second

@第二

如果我跑@second,一切都很好。如果我运行@first,我会得到任何只有@first fine的场景,但是当我同时运行@first@second的场景时,场景会运行,因为@first在那里,但是它使用@second的参数。由于我是通过NUnit控制台运行DLL,并且测试是通过SpecFlow编写的,所以我不确定问题可能出在哪里


有人对设置这样运行的测试有什么建议吗?

您不是很具体,但听起来您有这样一个功能文件:

@first
Scenario: A - Something Specific happens under the first settings
    Given ...etc...

@second
Scenario: B - Something Specific happens under the second settings
    Given ...etc...

@first @second
Scenario: C - Something general happens under the first and second settings
    Given ...etc...
[BeforeFeature("first")] 
public static string FirstSettings() 
{ ... }

[BeforeFeature("second")] 
public static string SecondSettings() 
{ ... }
通过运行“first”类别中的所有测试,您似乎正在选择要在NUnit中运行的测试

如果按如下方式设置事件定义:

@first
Scenario: A - Something Specific happens under the first settings
    Given ...etc...

@second
Scenario: B - Something Specific happens under the second settings
    Given ...etc...

@first @second
Scenario: C - Something general happens under the first and second settings
    Given ...etc...
[BeforeFeature("first")] 
public static string FirstSettings() 
{ ... }

[BeforeFeature("second")] 
public static string SecondSettings() 
{ ... }
如果执行场景C,则将在它之前执行
FirstSettings()
SecondSettings()
。这与是否使用
@second
类别选择要在NUnit下运行的测试无关

这几乎可以肯定是您看到第二个设置应用于您的测试的原因,这两个标记-我希望第二个设置会覆盖第一个设置,对吗


对于设置这样的测试,我唯一的建议是,将事件等绑定到特定的标记可能很有用,但应该尽可能少地使用。相反,让您的单个步骤定义可重用,并尽可能使用
给定的
步骤设置您的测试环境。

是的,就是这样。我已经问了好几次了,但忘了把细节放在这里。但你是对的,这就是我正在做的,因为我有两个环境,我想在它们上运行测试,但它们有不同的配置,我必须研究给定的步骤,但在两个环境上的测试完全相同,我尝试的方式似乎是最简单的。我真的在尝试建立我对specflow的实际知识。如果你想把你的问题作为新问题或补充来分享,我很乐意提出一些想法。