Как отобразить иерархию тестовых примеров Boost Test в Visual Studio 2017 Test Explorer? - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть файл модульного теста с использованием 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()

Моя цель с именем набора тестов Cloner_ состоит в том, чтобы собрать все тестовые наборы для класса Cloner_ вузел в иерархии тестовых случаев Boost.

Когда я выбираю запуск всех тестов в Visual Studio, он обнаруживает эту иерархию:

[22.09.2018 06:18:37 Informational] ------ Run test started ------
[22.09.2018 06:18:39 Informational] Found test: Cloner_/auto_cleanup
[22.09.2018 06:18:39 Informational] Found test: Cloner_/default_construction
[22.09.2018 06:18:39 Informational] Executing:   -> [Cloner_/auto_cleanup]
[22.09.2018 06:18:40 Informational] Executing:   -> [Cloner_/default_construction]
[22.09.2018 06:18:40 Informational] ========== Run test finished: 2 run (0:00:03,1048741) ==========

Однако он не отображает иерархия, за исключением того, что в качестве корня используется имя основного тестового модуля Boost cppx_tests (определено в отдельном файле):

enter image description here

(На приведенном выше снимке экрана демонстрация тестовых сценариев в Visual Studio приведена справа.)

Я бы хотел избежать старомодных префиксов имен в стиле C, поскольку Boost Test действительно позволяет определить иерархию.и так как Test Explorer сообщает пути в этой иерархии при поиске тестов для выполнения, так что он, очевидно, знает об этом.

Итак, как я могу заставить VS Test Explorer отображать иерархию тестовых случаев для тестов с использованием Boost?Тестовое заданиечтобы я мог легко определить, например, default_construction тестирование класса X по сравнению с классом Y или классом Z, или это невозможно?

...