【问题标题】:When running multiple tags with NUnit Console Runner and SpecFlow I get incorrect results使用 NUnit Console Runner 和 SpecFlow 运行多个标签时,我得到不正确的结果
【发布时间】:2012-01-27 04:28:58
【问题描述】:

这是我之前关于设置标签的问题的后续:Can I use tags in SpecFlow to determine the right environment to use? 并从这些标签设置变量:How to set up a URL variable to be used in NUnit/SpecFlow framework

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

所以如果我有以下标签:

@first

@first @second

@秒

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

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

【问题讨论】:

    标签: tags categories specflow nunit-console


    【解决方案1】:

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

    @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...
    

    您似乎正在通过运行“第一个”类别中的所有测试来选择要在 NUnit 中运行的测试。

    如果您像这样设置事件定义:

    [BeforeFeature("first")] 
    public static string FirstSettings() 
    { ... }
    
    [BeforeFeature("second")] 
    public static string SecondSettings() 
    { ... }
    

    如果你执行场景 C,那么 FirstSettings()SecondSettings() 将在它之前执行。这与您是否使用 @second 类别选择要在 NUnit 下运行的测试无关。

    这几乎肯定是您看到带有两个标签的第二个设置应用于您的测试的原因 - 我希望第二个设置会覆盖第一个设置,对吧?

    我对设置这样的测试的唯一建议是,将事件等绑定到特定标签可能很有用,但应该尽可能少地使用。而是让您的各个步骤定义可重用,并在可能的情况下使用Given 步骤设置您的测试环境。

    【讨论】:

    • 是的,就是这样。我已经问过几次了,忘了把这个细节放在这里。但你是对的,这就是我正在做的,因为我有两个环境我想运行测试,但它们有不同的配置,我必须查看给定的步骤,但两个环境的测试完全相同而我尝试的方式似乎是最容易做到的。
    • 我真的在努力建立我对 Specflow 的实用知识。如果您想分享您的问题作为新问题或对此问题的补充,我很乐意提供意见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多