我正在尝试测试我的部分代码。我编写了以下
test.h
文件:
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(my_test) {
BOOST_CHECK(true);
}
如果我运行测试,则会调用应用程序的 main 方法,并且由于缺少命令行参数,因此它会终止。我想按原样运行测试套件并成功,因为
BOOST_CHECK
上的 true
应该是通过的测试。一旦成功,我将从我的代码库中一一添加对函数的调用以进行回归测试。这可以吗?如果是的话,怎么办?
这篇文章建议将以下定义添加到
test.h
文件的顶部,但它不适用于跳过主方法调用:
#define BOOST_TEST_NO_MAIN true
BOOST_TEST_NO_MAIN
使得Boost.Test省略了它自己的main函数,因此它将回退到应用程序的main函数。
在单元测试中,不要链接应用程序的 main 函数(不要添加包含
main
的文件),并让 Boost.Test 添加自己的 main,它将运行所有测试。
在您的测试类集中
#define MAIN_METHOD_TEST
...
...
<YOUR TEST CASES>
...
...
#undef MAIN_METHOD_TEST
在您测试的班级中:
#ifdef MAIN_METHOD_TEST
int main_test(int argc, char *argv[])
#else
int main(int argc, char *argv[])
#endif
{
...
...
<YOUR MAIN METHOD CODE>
...
...
}
可以使用命令行参数作为参数调用 main
来测试
main_test
方法。