2

我有一个使用 Boost Test 的单元测试文件,如下所示:

#include <boost/test/unit_test.hpp>
#include <cppx/auto/Cloner_.hpp>
#include <utility>

namespace {
    struct S
    {
        static auto count() -> int& { static int c; return c; }

        S(){ ++count(); }
        S( const S& ) { ++count(); }
        S( S&& ) { ++count(); }
        ~S() { --count(); }
    };
}

BOOST_AUTO_TEST_SUITE( Cloner_ )

    BOOST_AUTO_TEST_CASE( default_construction )
    {
        cppx::Cloner_<int> cloner1;
        BOOST_TEST( cloner1.p() == nullptr );
    }

    BOOST_AUTO_TEST_CASE( auto_cleanup )
    {
        BOOST_REQUIRE( S::count() == 0 );

        {
            cppx::Cloner_<S> cloner1( new S );
            BOOST_TEST( S::count() == 1 );
            cppx::Cloner_<S> cloner2 = cloner1.clone();
            BOOST_TEST( S::count() == 2 );
        }
        BOOST_TEST( S::count() == 0 );
    }

BOOST_AUTO_TEST_SUITE_END()

我使用测试套件名称的目的是在 Boost 测试用例层次结构中的一个节点下Cloner_收集该类的所有测试用例。Cloner_

当我选择在 Visual Studio 中运行所有测试时,它会检测到这个层次结构:

[22.09.2018 06:18:37 信息] ------ 运行测试开始 ------
[22.09.2018 06:18:39 信息] 找到测试:Cloner_/auto_cleanup
[22.09.2018 06:18:39 信息] 找到测试:Cloner_/default_construction
[22.09.2018 06:18:39 信息] 执行:-> [Cloner_/auto_cleanup]
[22.09.2018 06:18:40 信息] 执行:-> [Cloner_/default_construction]
[22.09.2018 06:18:40 信息] ========== 运行测试完成:2 次运行 (0:00:03,1048741) ==========

但是,它不显示层次结构,只是它使用主 Boost 测试模块名称cppx_tests(在单独的文件中定义)作为根:

在此处输入图像描述

(Visual Studio 的测试资源管理器对测试用例的展示在上面的屏幕截图的右侧。)

我想避免使用老式的 C 样式名称前缀,因为 Boost Test 确实提供了一种定义层次结构的方法,并且由于测试资源管理器在搜索要执行的测试时报告该层次结构中的路径,因此它显然知道它。

那么,如何使 VS Test Explorer 显示使用 Boost Test 进行测试的测试用例层次结构,以便我可以轻松识别例如default_constructionX 类与 Y 类或 Z 类的测试,或者这是不可能的?

4

0 回答 0