繁体   English   中英

升级中的单元测试

[英]unit test in boost

我的单元测试有以下代码:

BOOST_AUTO_TEST_CASE (test_adapter) {
  boost::random::mt19937 gen;
  boost::normal_distribution<> nd1(10.0,31.0);
  unsigned int imax = 1000;
  std::vector<double> x, x_p;
  for (unsigned int k = 0 ; k < 1000 ; k++) {
    std::vector<double>().swap(x);
    std::vector<double>().swap(x_p);
    for (unsigned int i = 0 ; i < imax ; i++) {
      x.push_back(nd1(gen));
      x_p.push_back(nd1(gen));
        }
   }
        log_rtns <double >lr;
        BOOST_CHECK(lr( x, x_p) == false );

}

这是我的log_rtns:

template<class T>
class log_rtns: public std::binary_function<T,T,bool> {
 public:
  inline bool operator()(T t, T t_p) {return (std::log(t/t_p));}
};

您正在创建log_rtns变量(此处为log_rtns lr; )而未指定模板参数T 所以你必须写log_rtns<something> lr;

我猜你想要log_rtns<double> ,但不使用lr变量。

你也不能在两个数组上调用BOOST_CHECK_CLOSE() 你必须做类似的事情

BOOST_CHECK_EQUAL(x.size(), x_p.size());
for (size_t i = 0; i < x.size(); ++i) {
    BOOST_CHECK_CLOSE(x[i], x_p[i], 0.00000000000);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM