VSTest.console按属性过滤本机c ++单元测试

时间:2016-02-24 09:42:15

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

我目前遇到了以下问题:

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

要在visual studio中开始单元测试,我们使用Test-Explorer,如图1所示。通过向method attribute添加Test-Method(如图2所示) Test-Explorer允许按属性排序和过滤(如图3中所示)。

enter image description here

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

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

以下屏幕截图显示了使用控制台时测试是否成功: enter image description here

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

enter image description here

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

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

最好的问候,LorToso

1 个答案:

答案 0 :(得分:0)

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

我认为我将要采用的方法是将测试分离到不同的模块中,这样我就可以为夜间和CI构建和集成测试(例如需要数据库)运行单元测试,仅用于发布。

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