我现在使用BOOST :: UNIT_TEST框架来执行单元测试,它是执行单元测试的好工具。但是,我发现了一些不方便的东西:当我添加函数进行测试时,似乎函数必须是静态函数或自由函数,如下面的代码所示:
test_suite* ts = BOOST_TEST_SUITE( "unit_test" );
ts->add(BOOST_TEST_CASE(&static_fun));
当它不是静态函数时,例如,
class Abc
{
public:
void myfun();
};
Abc obj;
ts->add(BOOST_TEST_CASE(&(obj.myfun)));
然后,我会遇到C2064: term does not evaluate to a function taking 0 arguments
错误。我是否可以将非静态类成员函数添加到测试框架?感谢
答案 0 :(得分:2)
我想你试着定义一个测试夹具类?在大多数情况下,我使用boost测试的方式如下所示:
struct MyTestFixture
{
int test_data;
void func()
{
// some common test code
}
};
BOOST_FIXTURE_TEST_SUITE(MyTest, MyTestFixture)
BOOST_AUTO_TEST_CASE(Test1)
{
test_data = 3;
func();
// ...
}
BOOST_AUTO_TEST_CASE(Test2)
{
// ...
}
BOOST_AUTO_TEST_SUITE_END()
答案 1 :(得分:1)
你应该看here
在这种情况下,您可以使用boost::bind
。
ts->add(BOOST_TEST_CASE(boost::bind(&Abc::myfun, obj)));