【问题标题】:Automated unit tests build and run on commandline with Visual Studio solution使用 Visual Studio 解决方案在命令行上构建和运行自动化单元测试
【发布时间】:2022-01-09 16:50:51
【问题描述】:

我正在处理一个包含多个单元测试的项目。我有一个包含大约 10 个 XXPrj 的 Visual Studio .sln 文件。这些项目是使用 Google Test 制作的。如果我想使用 Visual Studio 2019 运行它们,一切正常,我可以构建和运行单元测试。

我想知道用命令行自动运行它们的最佳方式是什么。目的是然后将此命令行内容集成到詹金斯中,以使一切自动化。

【问题讨论】:

    标签: c++ visual-studio unit-testing googletest


    【解决方案1】:

    构建

    通过 命令行 构建 Visual Studio 解决方案/项目是使用 msbuild.exe 完成的。最好将 MSBuildpath 添加到 PATH 环境变量中。

    MSBuild 通常安装在 Visual Studio 文件夹中的某个位置。例如。在我的机器上路径如下:

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe
    

    如下构建包含所有项目的解决方案:

    msbuild.exe Example.sln
    
    # Or if you want to build a release version or add additional arguments
    msbuild.exe Example.sln /property:Configuration=Debug
    

    更多选项请参见MSBuild CLI Docs

    旁注: Jenkins 有一个 msbuild plugin,您可以将其与名为“使用 MSBuild 构建 Visual Studio 项目或解决方案”的构建步骤一起使用(重要提示:这不会安装 MSBuild,它只提供一个 GUI 以在构建计划中使用 MSBuild).

    运行测试

    要运行测试,您有两个选择:

    • 在构建管道中运行每个项目的可执行文件,可执行文件的退出代码将指示该项目的单元测试成功/失败。但是,您需要分别调用每个可执行文件;或
    • vstest.console.exeGoogle 测试适配器结合使用

    您可以使用 Google 测试适配器,就像您单击 Test -> Run -> All tests 以在您的项目中发现和执行测试时 Visual Studio 使用它的方式一样。

    在我的环境中,vstest.console.exe 位于此处:

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\TestPlatform\vstest.console.exe
    

    您还需要提供测试适配器的路径。然后执行如下所有测试:

    # Assuming vstext.console.exe is included in the PATH
    # and the current working directory is the relevant project executable
    # output folder:
    vstest.console.exe Project1.exe Project2.exe Project3.exe /TestAdapterPath:"<path to adapter>"
    

    该路径再次隐藏在 Visual Studio 文件夹中的某个位置。我是通过搜索GoogleTestAdapter.TestAdapter.dll 找到的。在我的机器上,它位于:

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\drknwe51.xnq
    

    结论

    因此,可以通过以下两个步骤执行使用命令行构建和运行 GoogleTest 单元测试的自动化方式,这些单元测试分为多个项目:

    1. 使用msbuild.exe 构建解决方案/项目
    2. 结合使用 vtest.console.exe 和 Google 测试适配器运行测试

    【讨论】:

    • 谢谢,工作:)
    猜你喜欢
    • 2012-01-03
    • 2015-07-31
    • 2011-04-22
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多