我正在使用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
为false,则调用match_pattern()
会将ostrg
中的数据保存到参考数据文件test_output_ref.txt
。
我使用它的方式是,我首先使用定义的宏CREATE_TEST_PATTERNS
构建,然后运行测试程序(测试作为后期构建步骤运行),将输出收集到文件中,目视检查输出文件以确保输出正确,然后我重新构建测试程序,CREATE_TEST_PATTERNS
未定义。在此模式下,测试将先前记录的预期结果与测试运行生成的结果进行比较。
到目前为止一切都很好。
我的问题是:有没有办法实现对match_pattern()
的记录/检查行为的控制,而无需重新编译测试程序?