Проблема с буст-тестом с argc и argv - PullRequest
0 голосов
/ 08 ноября 2018

Я очень расстроен, пытаясь получить Boost-тест используйте argc и argv. Основываясь на других ответах от переполнения стека, следующий код (с Boost 1.67.0) - самый близкий, который я получил. Тем не мение, он не скомпилируется, потому что ожидает дополнительного}. Я положил дополнительный} в разных местах, и перепробовал много других вещей, но я не могу для жизнь меня заставить это работать. РЕДАКТИРОВАТЬ: код сбалансирован {}. Я подозреваю некоторую тонкость, связанную с макросами Boost, но я не могу сказать, что это такое.

Кто-нибудь подскажет, пожалуйста, какие конкретно изменения вносятся в этот код? компилировать и делать то, что он должен делать. Прямо сейчас я очень высоко разочарование.

#define BOOST_TEST_MODULE how_to
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

#include <iostream>
#include <vector>
#include <string>

using std::cout;
using std::endl;
using std::vector;
using std::string;

struct F_ArgsFixture {
   F_ArgsFixture()
   : argc(boost::unit_test::framework::master_test_suite().argc),
     argv(boost::unit_test::framework::master_test_suite().argv)
   {
   }

   ~F_ArgsFixture() {}

   int argc;
   char **argv;
};

BOOST_FIXTURE_TEST_SUITE( how_to, F_ArgsFixture )

BOOST_FIXTURE_TEST_CASE( test_name1, F_ArgsFixture )
{
   F_ArgsFixture FF;
   string x = FF.argv[1];
   cout << "1 " << x << endl;
}

BOOST_FIXTURE_TEST_CASE( test_name2, F_ArgsFixture )
{
   F_ArgsFixture FF;
   string x = FF.argv[1];
   cout << "2 " << x << endl;
}

1 Ответ

0 голосов
/ 01 марта 2019

Как указывает документация , проблемы с вашим кодом следующие:

  • BOOST_FIXTURE_TEST_SUITE объявляет фиксатор для каждого тестового набора, поэтому нет необходимости вызывать BOOST_FIXTURE_TEST_CASE внутри тестового набора, а BOOST_AUTO_TEST_CASE достаточно
  • BOOST_FIXTURE_TEST_SUITE запускает новый набор тестов, и этот набор тестов должен быть закрыт на BOOST_AUTO_TEST_SUITE_END()

Версию компилируемого кода можно найти здесь

...