Есть ли способ управления бустом output_test_stream "запись против проверки" без перекомпиляции?
Я использую класс Boost.Test output_test_stream
чтобы убедиться, что мое приложение обеспечивает ожидаемый результат. Этот класс предоставляет простой метод для сравнения выходных данных с записанными в файл хорошо известными данными, вызывая match_pattern()
метод. Вот как я это использую:
#if defined( CREATE_TEST_PATTERNS )
bool pattern_test = false;
#else
bool pattern_test = true;
#endif
boost::test_tools::output_test_stream ostrg("test_output_ref.txt", pattern_test);
my_class_under_test cl(arg1, arg2, ostrg);
...
BOOST_CHECK( ostrg.match_pattern() );
Желаемый вывод находится в файле test_output_ref.txt. Призыв к match_pattern()
сравнивает данные в ostrg
к данным в файле. Если реальный pattern_test
ложно, призыв к match_pattern()
вместо этого сохранит данные из ostrg
в файл данных ref test_output_ref.txt
,
То, как я использую это, я сначала строю с помощью макроса CREATE_TEST_PATTERNS
определил и запустил тестовую программу (тесты выполнялись как шаг после сборки), чтобы собрать выходные данные в файл, визуально проверить выходной файл, чтобы убедиться, что выходные данные были правильными, и затем я перестроил тестовую программу с CREATE_TEST_PATTERNS
не определено В этом режиме тест сравнивает ранее записанный ожидаемый результат с результатом, полученным при выполнении теста. Все идет нормально.
У меня такой вопрос: есть ли способ добиться контроля над записью / проверкой поведения match_pattern()
без необходимости перекомпилировать тестовую программу?