【问题标题】:MSTest - Hide some unit tests from build serverMSTest - 从构建服务器隐藏一些单元测试
【发布时间】:2016-07-06 23:28:51
【问题描述】:

我有三个从构建服务器运行时无法通过的单元测试——它们依赖于运行测试的用户的登录凭据。

有什么办法(属性???)我可以从构建服务器隐藏这三个测试,并运行所有其他测试?

我们的构建服务器专家告诉我,生成一个排除这些测试的 vsmdi 文件可以解决问题,但我不知道该怎么做。

我知道我可以将这三个测试放入一个新项目中,并让我们的构建服务器管理员明确排除它,但我真的很希望能够在有问题的测试上使用一个简单的属性。

【问题讨论】:

    标签: c# visual-studio-2010 mstest


    【解决方案1】:

    您可以使用类别标记测试,然后根据类别运行测试。

    [TestCategory("RequiresLoginCredentials")]
    public void TestMethod() { ... }
    

    运行mstest时,可以指定/category:"!RequiresLoginCredentials"

    【讨论】:

    • 我在 NUnit 中也是这样做的。
    • 完美答案。一件小事:你确定不是 TestCategory,而是 Category?
    • 大卫,如果你有兴趣,这里有一个密切相关的后续问题:stackoverflow.com/questions/6061282/…
    【解决方案2】:

    有一个IgnoreAttribute。该帖子还列出了其他方法。

    【讨论】:

      【解决方案3】:

      其他答案都是旧的。

      在现代视觉工作室(2012 年及更高版本)中,测试使用 vstest 而不是 mstest 运行。

      新的命令行参数是/TestCaseFilter:"TestCategory!=Nightly"this 文章中所述。

      【讨论】:

        【解决方案4】:

        打开测试->Windows->测试列表编辑器。

        在那里你可以包含/隐藏测试

        【讨论】:

          【解决方案5】:

          我想出了如何在 VS 2012 的构建定义中按类别过滤测试。我在其他任何地方都找不到此信息。

          在测试源下的测试用例过滤器字段中,在自动化测试下,在构建过程参数下,在过程选项卡中,您需要编写 TestCategory=MyTestCategory(任何地方都没有引号)

          然后在测试源文件中需要添加TestCategory属性。我已经看到了一些方法来做到这一点,但对我有用的是将它添加到与 TestMethod 相同的属性中,如下所示。

          [TestCategory("MyTestCategory"), TestMethod()]

          这里你确实需要引号

          【讨论】:

            【解决方案6】:

            当我从 VS 构建定义(不完全是 MSTest)运行单元测试时,在自动测试属性的 Criteria 选项卡中指定:

            TestCategory!=MyTestCategory
            

            所有属于 MyTestCategory 类别的测试都被跳过。

            【讨论】:

              【解决方案7】:

              我的首选方法是在我的解决方案中包含两种测试项目:一种用于可以从任何上下文执行且应始终通过的单元测试,另一种用于需要特定上下文才能正常运行的集成测试(用户凭证、数据库、Web 服务等)。我的测试项目使用命名约定(例如:businessLogic.UnitTests vs businessLogic.IntegrationTests),并且我将构建服务器配置为仅运行单元测试(*.UnitTests)。这样,如果我想运行集成测试,我就不必评论 IgnoreAttributes,我发现它比编辑测试列表更容易。

              【讨论】:

                猜你喜欢
                • 2013-02-08
                • 1970-01-01
                • 2015-03-17
                • 1970-01-01
                • 1970-01-01
                • 2016-10-17
                • 2019-05-15
                • 2015-10-12
                • 2021-03-28
                相关资源
                最近更新 更多