【发布时间】:2013-07-10 13:57:27
【问题描述】:
我写了这个非常简单的类,以便清楚我的问题是什么:
class A
{
public:
int x;
A(int y) {x=y;}
bool operator==(const A &other) const {return x==other.x;}
};
现在,如果我定义 A first(1) 和 A second(1),那么 BOOST_CHECK_EQUAL(first, second) 应该通过对我来说似乎很自然。但是,我在尝试执行此操作时遇到 50 个错误,第一个听起来像: no math for operator
【问题讨论】:
-
错误是什么?
-
它无法编译...而且我正在使用代码块,因此无法复制粘贴错误。所有这些都在文件 test_tools.hpp 中,我不太了解它们的含义(我在帖子中提到了第一个)。我应该举更多的例子吗?
-
我用 gcc 编译,我想粘贴错误,但是 11400 个字符太长了,无法评论。
-
根据this reference
BOOST_CHECK_EQUAL将打印不相等参数的值,因此宏扩展为可能包含cout << first << " != " << second之类的代码。因此你必须为你的类定义一个输出操作符(一个非成员函数std::ostream& operator<<(std::ostream&, const A&))。 -
听起来很奇怪,大家在使用单元测试的时候都会这样做吗?没有其他的检查方法吗?
标签: c++ unit-testing boost