首页 > 解决方案 > 如何使用 vstest.console.exe 运行 BOOST 测试?

问题描述

我正在使用 BOOST 测试来测试我的 C++ 代码。测试通常如下所示,并且测试项目构建为 exe。为了收集代码覆盖率信息,我希望能够使用 vstest.console.exe 运行我的测试,这样我就可以尝试使用它的 /Enablecodecoverage 选项。

#include <boost/test/unit_test.hpp>
... other includes ...

class TestContext {...}

BOOST_AUTO_TEST_SUITE(MyTests);

    BOOST_FIXTURE_TEST_CASE(SomeTest, TestContext)
    {
        // test code 
    }

BOOST_AUTO_TEST_SUITE_END()

我一直遇到“.exe 中没有可用的测试。确保测试发现器和执行器已注册并且平台和框架版本设置正确,然后重试。” 在这一点上我一无所知。

使用--diagnostic选项运行时,我在生成的文件中看到了这一点:

“C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform TpTrace 警告:0 : 13924, 3, 2020/10/15, 14:33:27.926, 1817417335033, testhost。 exe,TestPluginDiscoverer:无法从文件“C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\Extensions\Microsoft.VisualStudio.Coverage.Interop.dll”加载扩展。跳过测试此文件的扩展扫描。错误:System.BadImageFormatException:无法加载文件或程序集“Microsoft.VisualStudio.Coverage.Interop”或其依赖项之一。尝试加载格式不正确的程序。文件名: 'Microsoft.VisualStudio.Coverage.Interop'"

我机器上的 Visual Studio 安装程序确认 Boost.Test 测试适配器已安装。

标签: c++boostvstestvstest.console.exeboost.test

解决方案


弄清楚了。问题是正确的 TestAdapter 路径。我已经安装了 Boost.Test 适配器(如果没有,可以从 VS Installer 安装)。适配器位于我机器上 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions 下的文件夹中,即使我给出了路径,vstest.console.exe 也能够检测和执行测试根目录,例如 /TestAdapterPath:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise"。


推荐阅读