0

我正在使用 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()无需重新编译测试程序?

4

0 回答 0