我想开始使用Boost Test库为我的应用程序创建测试。
按照我在http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/tutorials/new-year-resolution.html找到的教程,我开始了我的测试课程。
所以,我为我的测试创建了一个类,而简单的.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;
}
好的,我知道我必须做一些更聪明的事情而不是回归真实,但这不是问题。问题是它不能编译。 我认为该库已加载更正,因为如果我只编译前两行我没有错误,如教程页中所述。
如果我尝试编译它,我从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
我是Boost的新手,所以我不知道我必须做些什么。我做错了什么?我认为我已经完成了相同的教程步骤?
感谢您的回复。
答案 0 :(得分:0)
BOOST_AUTO_TEST_CASE应该放在文件范围内。它不能放在函数实现中。您可以使用基于类方法的测试用例,但不能使用自动注册(暂时)。查看文档以获取更多详细信息
答案 1 :(得分:0)
您应该使用BOOST_AUTO_TEST_CASE而不是成员函数。例如:
#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());
}
如果您需要测试环境,请检查fixtures。