《BOOST程序库完全开发指南》 第06章 正确性与测试

当定义了宏 BOOST_ENABLE_ASSERT_HANDLER 后,使用 BOOST_ASSERT() 断言失败后,会调用 boost::assertion_failed() 函数,该函数声明在 boost 名字空间内,但特意被设计为没有实现。

#include <iostream>

#include <boost/format.hpp>



namespace boost

{

    void assertion_failed(char const* expr,char const * function,char const* file,long line)

    {

        boost::format fmt("Expression:%s\nFunciton:%s\nFile:%s\nLine:%s\n");        fmt %expr %function %file %line;

        std::cout<<fmt;

    }

}



#define BOOST_ENABLE_ASSERT_HANDLER

#include <string>

#include <cassert>

#include <boost/assert.hpp>

int main()

{

    assert(1 == 1); //实际上是一个宏,尽管它不是大写。编译时加上 -DNDEBUG 无效

    std::string str = "Hello";

    BOOST_ASSERT(str.size() == 0 && "str's size is 0."); //效果同于assert(),仅在debug模式下有效。&& 后面的内容相当于注释,方便调试

}

 

#define BOOST_TEST_MAIN

#include <boost/test/included/unit_test.hpp>



BOOST_AUTO_TEST_SUITE(test_suite_1)



BOOST_AUTO_TEST_CASE(test_case_1)

{

    BOOST_CHECK(1);

    BOOST_CHECK_EQUAL(1,1);

}



BOOST_AUTO_TEST_CASE(test_case_2)

{

    BOOST_CHECK(1);

    BOOST_CHECK_EQUAL(1,1);

}



BOOST_AUTO_TEST_SUITE_END()

 

你可能感兴趣的:(boost)