【问题标题】:No Output from Boost Test升压测试无输出
【发布时间】:2011-02-03 05:42:40
【问题描述】:

我正在尝试使用 boost 测试库来实现单元测试。我首先阅读了 boost 站点上的手册。在此之后,我在我已经存在的项目之一中制作了一个简单的测试程序。我面临的唯一问题是我无法看到测试结果。我确信我做错了:) 但我无法弄清楚。以下是我的项目的详细信息

我为此使用了 Visual Studio8: 我有一个名为 MyProject.sln

的解决方案

与其他项目一起,我有一个名为 MyDLL.vcproj 的项目(该项目的类型是 DLL

与 MYDLL proj 中的其他文件一起,我添加了一个新的 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 的动态库变体)。

【问题讨论】:

    标签: unit-testing boost boost-test


    【解决方案1】:

    我确信我正在做一些事情 错了:)

    实际上,我认为问题在于你做对了。

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

    有关所有运行时参数,请参阅 this page of the documentation

    编辑:实际上是--log_level(中间有下划线)

    【讨论】:

      【解决方案2】:

      我们的单元测试是通过工具后编译调用的;所以我们不能轻易将参数传递给 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 )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-25
        • 2011-06-24
        相关资源
        最近更新 更多