在不调用主方法的情况下运行Boost.Test

问题描述 投票:0回答:2

我正在尝试测试我的部分代码。我编写了以下

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
c++ linux boost clion boost.test
2个回答
2
投票

BOOST_TEST_NO_MAIN
使得Boost.Test省略了它自己的main函数,因此它将回退到应用程序的main函数。

在单元测试中,不要链接应用程序的 main 函数(不要添加包含

main
的文件),并让 Boost.Test 添加自己的 main,它将运行所有测试。


0
投票

在您的测试类集中

#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
方法。

© www.soinside.com 2019 - 2024. All rights reserved.