我现在正在使用 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
错误。知道我可以将非静态类成员函数添加到测试框架吗?谢谢
最佳答案
我认为您尝试定义一个测试夹具类?大多数情况下我使用 boost test 的方式是这样的:
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()
关于c++ - 我可以将 BOOST_TEST_CASE 用于非静态类成员函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21183538/