加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读