2011-02-03 72 views
3

我试图用升压测试库实现单元测试。我从阅读增强站点的手册开始。在此之后,我在我现有的一个项目中做了一个简单的测试程序。我面临的唯一问题是我无法看到测试结果。我相信我在做一些错误的事情:)但我无法弄清楚。以下是我的项目的细节升压测试没有输出

我使用视觉studio8此: 我有一个名为MyProject.sln

随着其他项目的解决方案我有一个名为MyDLL.vcproj计划(The该项目的类型是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测试作为独立的库(UTF的动态库varian)。

回答

2

我相信我正在做的事情 错了:)

其实,我认为这个问题是您做正确的事情。

您的测试通过,因为检查的值是true,默认情况下,Boost.Test只输出关于失败测试的信息。您需要设置日志级别,这可以通过以下两种方式之一完成:将--log_level=all作为测试可执行文件的选项,或者将环境变量BOOST_TEST_LOG_LEVEL设置为all

查看this page of the documentation所有运行时间参数。

编辑:它实际上--log_level(在中间下划线)

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)