我正在尝试使用boost测试库来实现单元测试。我开始阅读增强网站上的手册。在此之后,我在我现有的一个项目中制作了一个简单的测试程序。我面临的唯一问题是我无法看到测试结果。我确信我犯了一些错误:)但我无法想象。以下是我的项目的详细信息
我正在使用visual studio8: 我有一个名为 MyProject.sln
的解决方案与其他项目一起,我有一个名为 MyDLL.vcproj 的项目(此项目的类型为 DLL )
与MYDLL项目中的其他文件一起添加新的cpp文件名 MyTest.cpp ,该文件包含以下代码:
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
//#define BOOST_TEST_MODULE MyTestTestModue //no need for this maro if above macro is used
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(SampleTC)
{
BOOST_CHECK(true);
};
我在MYDLL项目属性表中进行了以下更改
C++ -> General -> Additional Include Dependencies = D:\MyProject\Boost\boost\test
Linker -> General -> Additional Libray Directories = D:\MyProject\Boost\lib\win32\Debug
Linker -> System -> SubSystem = (/SUBSYSTEM:CONSOLE)
我阅读了手册中给出的所有编译细节,但仍然无法获得输出。理想情况下,我想将Boost测试用作独立的lib(UTF的动态库varian)。
答案 0 :(得分:2)
我确信我正在制作一些东西 错了:)
实际上,我认为问题在于你正在做出正确的事情。
您的测试通过,因为选中的值为true
,默认情况下,Boost.Test仅输出有关失败的测试的信息。您需要设置日志级别,可以通过以下两种方式之一完成:将--log_level=all
作为选项传递给测试可执行文件,或将环境变量BOOST_TEST_LOG_LEVEL
设置为all
。
有关所有运行时参数,请参阅this page of the documentation。
编辑:它实际上是--log_level(中间有一个下划线)
答案 1 :(得分:1)
我们的单元测试是通过编译后的工具调用的;所以我们不能轻易地将参数传递给EXE(不改变工具配置并影响所有测试)。
设置日志级别阈值的另一种方法是从代码中调用Boost单元测试记录器单例:
boost::unit_test::unit_test_log_t::instance().set_threshold_level( boost::unit_test::log_messages );
为了增加乐趣,请输出显示消息的文件名和行号:
#define MY_BOOST_TEST_MESSAGE( msg ) BOOST_TEST_MESSAGE( `__FILE__` << `__LINE__` << " " << msg )