【问题标题】:VSTest.console Filter native c++ unit tests by attributeVSTest.console 按属性过滤原生 C++ 单元测试
【发布时间】:2016-06-06 12:35:54
【问题描述】:

我目前遇到以下问题:

我们通过使用 Visual Studio 2015 Microsoft::VisualStudio::CppUnitTestFramework 中包含的本机 microsoft 单元测试框架将单元测试引入我们的本机 c++ 应用程序。

要在 Visual Studio 中启动单元测试,我们使用 Test-Explorer,如图 1 所示。通过将 method attribute 添加到 Test-Method(如图 2 所示)Test-Explorer 允许排序并按属性过滤(如图 3 所示)。

所有这些都没有问题。当我们尝试将这些单元测试实施到我们的持续集成系统 (CI) 中时,我们开始遇到问题。

要从控制台启动单元测试,我们使用vstest.console.exe,它位于:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe。官方文档可以找到Here.

以下屏幕截图显示了使用控制台时测试如何成功:

添加记录器并将文件输出到 .trx 也很有效。 NOT 的作用是应用过滤器来确定具有特定属性的测试。根据文档,使用/TestCaseFilter:-switch 应该可以实现类似的功能。然而,以下屏幕截图显示了由此产生的错误:

它转换为:“没有与过滤器匹配的测试,因为它包含一个或多个无效属性 (TakesLong)。指定包含有效属性 (TestCategory、Priority、FullyQualifiedName、Name) 的过滤器表达式,然后重试。 "

有人知道这个问题或知道如何解决它吗?最终目标是能够排除某些测试(需要很长时间/需要硬件加密狗等)。

最好的问候,洛托索

【问题讨论】:

  • 有一篇很好的关于在 VS 中使用测试资源管理器使用 C++ 进行单元测试的文章,如果你尝试这个,你可以使用文本资源管理器来过滤你的单元测试吗?这是文档:msdn.microsoft.com/en-us/library/hh270864.aspx
  • @PedroG.Dias 是的,我可以使用测试探索器来过滤单元测试。但是,当尝试在 Visual Studio 之外(使用控制台)运行测试时,这不起作用

标签: c++ visual-studio unit-testing visual-studio-2015 vstest.console.exe


【解决方案1】:

我也遇到了这个问题,可悲的是,看起来我们运气不好。 vstest.console.exe 仅支持有限数量的 C++ 和 C# 过滤器。

我认为我将要采用的方法是将测试分离到不同的模块中,这样我就可以为每晚运行单元测试,并且只为发布版本运行 CI 构建和集成测试(比如需要一个数据库)。

或者,您可以在同一模块中按命名空间将它们拆分,并使用 FullyQualifiedName 过滤器。不幸的是,也没有 '!~' 条件,所以你可能不得不以某种方式解决这个问题。

【讨论】:

    猜你喜欢
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 2018-12-02
    相关资源
    最近更新 更多