Unit testing Boost单元测试使用中的问题

Unit testing Boost单元测试使用中的问题,unit-testing,gcc,boost-test,Unit Testing,Gcc,Boost Test,我想开始使用Boost测试库为我的应用程序创建测试 在我找到的教程之后,我开始了我的测试课程 所以,我为我的测试创建了一个类,简单的.cpp就是这个 #define BOOST_TEST_MODULE MyClass test #include <boost/test/unit_test.hpp> #include "myclasstest.h" MyClassTest::MyClassTest() { } /** * Test the class. */ bool My

我想开始使用Boost测试库为我的应用程序创建测试

在我找到的教程之后,我开始了我的测试课程

所以,我为我的测试创建了一个类,简单的.cpp就是这个

#define BOOST_TEST_MODULE MyClass test
#include <boost/test/unit_test.hpp>

#include "myclasstest.h"

MyClassTest::MyClassTest()
{

}

/**
 * Test the class.
 */
bool MyClassTest::testClass()
{
    BOOST_AUTO_TEST_CASE(empty_test)
    {
        MyClass xTest;
        BOOST_CHECK(xTest.isEmpty());
    }

return true;
}
#定义BOOST_测试(模块MyClass测试)
#包括
#包括“myclasstest.h”
MyClassTest::MyClassTest()
{
}
/**
*测试课程。
*/
bool MyClassTest::testClass()
{
增压自动测试用例(空测试)
{
MyClass xTest;
BOOST_CHECK(xTest.isEmpty());
}
返回true;
}
好吧,我知道我必须做一些比返回真值更明智的事情,但这不是问题所在。问题是它无法编译。 我认为这个库是正确加载的,因为如果我只使用前两行进行编译,我不会出错,正如教程页面中所解释的

如果我试图编译它,我会从GCC获得以下错误输出:

myclasstest.cpp: In member function ‘bool MyClassTest::testClass()’:
myclasstest.cpp:16:5: error: a function-definition is not allowed here before ‘{’ token
myclasstest.cpp:16:1: error: ‘empty_test_invoker’ was not declared in this scope
myclasstest.cpp:16:5: error: template argument for ‘template<class T> struct  boost::unit_test::ut_detail::auto_tc_exp_fail’ uses local type ‘MyClassTest::testClass()::empty_test_id’
myclasstest.cpp:16:5: error:   trying to instantiate ‘template<class T> struct boost::unit_test::ut_detail::auto_tc_exp_fail’
myclasstest.cpp:17:5: error: a function-definition is not allowed here before ‘{’ token
myclasstest.cpp:23:1: error: expected ‘}’ at end of input
myclasstest.cpp:23:1: warning: no return statement in function returning non-void
myclasstest.cpp:在成员函数“bool myclasstest::testClass()”中:
myclasstest.cpp:16:5:错误:此处不允许在“{”标记之前使用函数定义
myclasstest.cpp:16:1:错误:“empty\u test\u invoker”未在此作用域中声明
myclasstest.cpp:16:5:错误:“template struct boost::unit\u test::ut\u detail::auto\u tc\u exp\u fail”的模板参数使用本地类型“myclasstest::testClass()::empty\u test\u id”
myclasstest.cpp:16:5:错误:尝试实例化“模板结构boost::单元测试::ut\u详细信息::自动\u tc\u exp\u失败”
myclasstest.cpp:17:5:错误:此处不允许在“{”标记之前使用函数定义
myclasstest.cpp:23:1:错误:输入末尾应为“}”
myclasstest.cpp:23:1:警告:函数中没有返回非void的返回语句
我是新手,所以我不知道我必须做什么。我做错了什么?我想我已经完成了与教程相同的步骤,还是没有


感谢您的回复。

BOOST\u AUTO\u TEST\u案例应该放在文件作用域中。它不能放在函数实现中。您可以使用基于类方法的测试案例,但不能使用自动注册(暂时)。有关更多详细信息,请查看文档。

您应该将BOOST\u AUTO\u TEST\u用例与非成员函数一起使用。例如:

#define BOOST_TEST_MODULE MyClass test
#include <boost/test/unit_test.hpp>

#include "MyClass.h"

BOOST_AUTO_TEST_CASE( testMyClass )
{
   MyClass xTest;
   BOOST_CHECK(xTest.isEmpty());
}
#定义BOOST_测试(模块MyClass测试)
#包括
#包括“MyClass.h”
BOOST\u AUTO\u TEST\u案例(testMyClass)
{
MyClass xTest;
BOOST_CHECK(xTest.isEmpty());
}
检查是否需要测试上下文