如何在 visual studio 中设置测试发现路径?

How to set path at test discovery in visual studio?

如何在 visual studio 的测试资源管理器中的测试发现期间设置我的外部二进制文件的路径?之后如何确保它使用正确的路径?

我使用 windows 10 和 VS 2019。我有一个解决方案,可以将一些二进制文件和一些测试构建到不同的文件夹中。另外,我有一些第三方依赖项,每个都在自己的文件夹中。

类似于:

solutionDir/
-ownBinaries/
-testBinaries/
-externalBinaries/

我想使用测试资源管理器来 运行 我的测试。为此,我使用了 .runsettings 文件。我通过 NuGet 安装了 Google 测试适配器(稍后它将在 CI 上 运行,所以这是唯一的选择)。自动 运行 设置发现被禁用,此文件被选为 运行 设置文件。它将 workingDir 覆盖到我的 ownBinaries 文件夹,并使用 externalBinaries 扩展 PATH 环境变量。相关部分是:

<SolutionSettings>
    <Settings>
        <AdditionalTestExecutionParam>-testdirectory=$(SolutionDir)</AdditionalTestExecutionParam>
        <WorkingDir>$(SolutionDir)ownBinaries</WorkingDir>
        <PathExtension>$(SolutionDir)externalBinaries</PathExtension>
    </Settings>
</SolutionSettings>

这工作正常,在发现我的测试后,但是当它试图发现我的测试时我遇到了问题。

我使用 google 测试和 c++,所以测试发现会尝试 运行 那些带有 --gtest-list-tests 参数的测试,然后用测试名称、案例等填充视图. 二进制文件很好,构建没有错误,我可以从调试器 运行 它们,它们产生我想要的输出。

但是测试浏览器不会显示它们,因为它没有设置 externalBinaries 路径。

这就是导致我出现这种情况的原因。

Google Test Adapter: Test discovery starting...
Failed to run test executable 'D:\MySolution\testBinaries\SBCUnitTest.exe': One or more errors occurred.
Check out Google Test Adapter's trouble shooting section at https://github.com/csoltenborn/GoogleTestAdapter#trouble_shooting
In particular: launch command prompt, change into directory '..\ownBinaries', and execute the following command to make sure your tests can be run in general.
D:\MySolution\testBinaries\SBCUnitTest.exe --gtest_list_tests -testdirectory=
Found 0 tests in executable D:\MySolution\testBinaries\SBCUnitTest.exe
Test discovery completed, overall duration: 00:00:00.3022924

您是否注意到 -testDirectory= 是空的,尽管它已在 运行settings 文件中设置?

我完全不知道该如何进行。这种解决方法对于复制所有文件来说非常繁重,然后每次启动 VS 时删除除测试二进制文件之外的所有文件。

这是错误消息中提到的 Troubleshooting 部分的 link。 我已经通读了 github 上的自述文件,还有 Microsoft's website.

上的 运行 设置文档

编辑

我在 VsTest.console.exe 方面取得了进步,我可以 运行 使用以下正确参数成功进行所有测试:

& "VSTest.console.exe" *_uTest.exe /Settings:..\MySolution.gta.runsettings /TestAdapterPath:"..\packages\GoogleTestAdapter.0.18.0\build\_common\"

我使用相同的 *.runsettings*.gta_settings_helper 文件。这些文件用于获取依赖项的绝对路径。我可以从不同的文件夹 运行 这个,但后来我不得不调整参数(测试发现模式、运行 设置的相对路径和 GTA 的相对路径)。

好消息,它在 Azure 上成功 运行s(它使用 vstest.console)。

编辑 2

试图合并 workingDirpathExtension 节点,因此只需要一个(pathExtension)。没有成功。

尝试在 VS 安装程序中为 google 测试安装测试适配器,删除 运行 设置文件,然后在 VS->工具->选项中设置属性,然后为 [= 测试适配器90=] 测试。即使示例 pathExtension 对我也不起作用。

%AppData%/Local/Temp/TestAdapter/someNumber/*.txt 下找到了扩展日志,在该日志中我找到了一行作为 运行 设置文件。我在这里粘贴日志的格式化版本

<RunSettings>
    <GoogleTestAdapterSettings>
        <SolutionSettings>
            <Settings>
                <WorkingDir>$(SolutionDir)</WorkingDir>
                                <PathExtension>$(SolutionDir)externalBinaries</PathExtension>
            </Settings>
        </SolutionSettings>
        <ProjectSettings>
        </ProjectSettings>
               <GoogleTestAdapterSettings>
        <SolutionSettings>
            <Settings>
            </Settings>
        </SolutionSettings>
        <ProjectSettings>
        </ProjectSettings>
        </GoogleTestAdapterSettings>
    </GoogleTestAdapterSettings>
</RunSettings>

有人知道为什么 google 测试适配器设置为空吗?它从哪里来?我认为这会覆盖我的设置。

事实证明,在第一个 运行 之前,相对路径是未知的。

简单的解决方案
在 Visual Studio -> 选项 -> Google 测试设置下的 PATH Extension 添加 完整路径 PATH Extension。同时,自定义 *.runsetting 文件 选择。

使用此方法可以发现我的所有测试,但它是每个克隆的回购的手动设置。