Boost.Tests vc142 от Vcpkg на Visual Studio 2019 - PullRequest
0 голосов
/ 13 марта 2020

Я новичок как в vcpkg, так и в библиотеке Boost, и я изучал и пытался настроить инфраструктуру boost-unit-tests-framework на VS 2019, но все документы устарели.

Моя цель - запустить буст-тесты из проводника тестов в visual studio.

Vcpkg

  1. Клонировал Vcpkg и запустил bootstrap -vcpkg.bat
  2. Ран vcpkg интегрировать установку для настройки Visual Studio с библиотекой и включения путей к установленным пакетам

Компиляция тестов [Только отладка]

Следующее: ms-docs

  • Установлен пакет буст-теста с использованием vcpkg install boost-test:x64-windows-static
  • Добавлены следующие элементы в <PropertyGroup Label="Globals"> в моем проекте модульного тестирования:
   <VcpkgTriplet>x64-windows-static</VcpkgTriplet>
   <VcpkgEnabled>true</VcpkgEnabled>
  • Установить C / C ++ -> Генерация кода -> Библиотека времени выполнения в Multi-threaded Debug (/MTd)
  • Добавлено Дополнительные каталоги включения -> $(VcpkgRoot)include\, который разрешается в C:\vcpkg\installed\x64-windows-static\include\
  • Добавлен Linker -> Дополнительные каталоги библиотек -> $(VcpkgRoot)debug\lib\, который разрешает в C:\vcpkg\installed\x64-windows-static\debug\lib\
  • добавлено компоновщик -> ввод -> дополнительные зависимости -> boost_unit_test_framework-vc140-mt-gd.lib;boost_regex-vc140-mt-gd.lib;boost_exception-vc140-mt-gd.lib;boost_container-vc140-mt-gd.lib;%(AdditionalDependencies)
  • добавлен тестовый код:
    #define BOOST_TEST_MODULE MyTest
    #include <boost/test/included/unit_test.hpp>
    #include <string>

    class MyClass
    {
        std::string m_name = "Jim";
    public:
        std::string get_value() const { return m_name; }
        void set_value(std::string const &name) { m_name = name; }
    };

    BOOST_AUTO_TEST_CASE(my_boost_test)
    {
        std::string expected_value = "Bill";

        MyClass mc;
        BOOST_CHECK(expected_value == mc.get_value());
        BOOST_TEST(expected_value == mc.get_value());
        mc.set_value(expected_value);
        BOOST_TEST(expected_value == mc.get_value());
    }

Консольный запуск

Все работает нормально, выполняя тестовый exe из консоли: enter image description here

VS Тестовый проводник

Ничего не отображается в тесте -explorer, даже если мой тестовый адаптер буста установлен .. empty-test-explorer

Кто-нибудь уже решил это ??

Одна найденная альтернатива - запустите test.exe как часть процесса сборки, как упоминается в boost-docs. Не совсем полезно для моей команды.

...