【问题标题】:vstest.console.exe with ClassName as /testcasefiltervstest.console.exe 与 ClassName 作为 /testcasefilter
【发布时间】:2021-11-20 01:37:57
【问题描述】:

我正在寻找使用 vstes.console.exe 通过 ClassName 执行单元测试,任何帮助

我试过了

/TestCaseFilter:"ClassName=ProgressTests"

但这会引发此错误:

错误:没有测试匹配过滤器,因为它包含一个或多个 无效的属性 (ClassName)。指定过滤器表达式 包含有效属性(TestCategory、Priority、 FullyQualifiedName, Name) 并重试。

谢谢

【问题讨论】:

    标签: vstest.console


    【解决方案1】:

    您可以通过指定完全限定的类名来运行测试:

    vstest.console MyBusinessDomain.Tests.dll /testcasefilter:FullyQualifiedName~MyBusinessDomain.Tests.Shopping.Cart
    

    地点:

    MyBusinessDomain.Tests.dll是测试dll

    MyBusinessDomain.Tests.Shopping.Cart 是完全限定的类名

    或者您可以通过命名空间运行测试类:

    vstest.console MyBusinessDomain.Tests.dll /testcasefilter:FullyQualifiedName~MyBusinessDomain.Tests.Shopping
    

    此命令将运行 MyBusinessDomain.Tests.Shopping 命名空间下的所有测试。

    注意:仅供参考,vstest.console 比 mstest 更新,更适合通过命令行运行。可以用这个位置添加到环境路径中(VS2015):

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow
    

    【讨论】:

    • 在 Visual Studio 2019 中,我刚刚尝试了vstest path/to/tests.dll /testcasefilter:"ClassName=SomeTestClass",它工作得很好。也许这种支持是在 VS 2019 中添加的?
    • 其实是/testcasefilter:ClassName~SomeTestClass(~不是=)
    【解决方案2】:

    根据https://blogs.msdn.microsoft.com/vikramagrawal/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter/ - “ClassName 仅对 Windows 商店应用程序的单元测试有效,目前不适用于经典 MSTest”,尽管该博客文章是多年前的。

    您可以只使用 /testcasefilter:FullyQualifiedName~NameSpace.Class 中的 FullyQualifiedName 过滤器类型

    【讨论】:

      【解决方案3】:

      tilda ~ 表示“包含”,因此如果 Foobar 是您的班级名称:

      vstest.console bin\Debug\MyTests.dll /TestCaseFilter:FullyQualifiedName~Foobar
      

      https://msdn.microsoft.com/en-us/library/jj155800.aspx

      【讨论】:

        猜你喜欢
        • 2020-02-11
        • 2012-04-20
        • 2014-09-09
        • 2021-06-27
        • 1970-01-01
        • 2019-10-26
        • 2015-12-28
        • 1970-01-01
        相关资源
        最近更新 更多