c – 使用BOOST.Test在文件中生成测试报告的更好方法是什么?
发布时间:2020-12-16 10:28:13 所属栏目:百科 来源:网络整理
导读:我知道默认情况下报告是针对标准错误的,因此必须将其重定向到文件. 我的问题是我们是否应该在全球范围内进行此操作?这对我来说似乎并没有起作用. 这是我试过的 – struct MyConfig{ MyConfig() : testReport("fileName.log") { if(!testReport.fail()) orig
我知道默认情况下报告是针对标准错误的,因此必须将其重定向到文件.
我的问题是我们是否应该在全球范围内进行此操作?这对我来说似乎并没有起作用. 这是我试过的 – struct MyConfig { MyConfig() : testReport("fileName.log") { if(!testReport.fail()) original = std::cerr.rdbuf(testReport.rdbuf()); } ~MyConfig() { cerr.rdbuf(original); testReport.close(); } ofstream testReport; streambuf* original; }; BOOST_GLOBAL_FIXTURE(MyConfig); 运行测试后,仅在控制台上报告输出,尽管使用给定名称创建了0kb文件. 解决方法
你可以试试这个替代品,改编自
here,据称可以用于Boost 1.34.1.这似乎更像Boost的意图 – 看看结果流覆盖的使用情况.
// // run_tests.cc // #define BOOST_AUTO_TEST_MAIN #include <iostream> #include <fstream> #include <cassert> #include <boost/test/auto_unit_test.hpp> #include <boost/test/results_reporter.hpp> std::ofstream ReportRedirector::out; struct ReportRedirector { ReportRedirector() { out.open("fileName.log"); assert( out.is_open() ); boost::unit_test::results_reporter::set_stream(out); } private: static std::ofstream out; }; BOOST_GLOBAL_FIXTURE(ReportRedirector) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |