使用 Visual Studio 解决方案在命令行上构建和 运行 自动化单元测试

Automated unit tests build and run on commandline with Visual Studio solution

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

我想知道 运行 最好的方法是使用命令行自动化。目的是将这些命令行内容集成到 jenkins 中,使一切自动化。

建造

通过 命令行 构建 Visual Studio solution/project 是用 msbuild.exe 完成的。最好将 MSBuildpath 添加到 PATH 环境变量中。

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

C:\Program Files (x86)\Microsoft Visual Studio17\Community\MSBuild.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).

运行 测试

要运行 测试你有两个选择:

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

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

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

C:\Program Files (x86)\Microsoft Visual Studio17\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 Studio17\Community\Common7\IDE\Extensions\drknwe51.xnq

结论

因此,可以在以下两个步骤中使用命令行自动构建和 运行 Google测试单元测试,这些单元测试分为多个项目:

  1. 使用 msbuild.exe
  2. 构建 solution/project
  3. 运行 结合使用 vtest.console.exe 和 Google 测试适配器
  4. 的测试