c++ - 我可以将 BOOST_TEST_CASE 用于非静态类成员函数吗?

标签 c++ boost boost-test

我现在正在使用 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/

相关文章:

c# - C# 开发人员的 C++ 命名约定

c++ - collect2:错误:ld返回1退出状态 undefined reference

c++ - Boost Test 寄存器异常翻译器

c++ - 逐元素 vector 乘法

C++ - 智能指针 - 通过模板将派生类共享指针传递给基类

c++ - Boost共享锁创建失败

c++ - Boost:迭代图像区域

c++ - boost.test - 区分来自同一项目的不同构建配置的测试结果

c++ - 提升测试 'filename' .test.report.xml 未找到

c++ - 理解OpenGL红皮书中的一段代码