Boost.Test吐出垃圾而不是可读的错误消息

时间:2012-02-03 20:59:39

标签: c++ boost boost-test

我正在使用Boost.Test,我的测试失败了。这很有趣,但结果令人恐惧。这是Boost.Test的输出:

$ zwja/Build/Products/Debug/test ; exit;                                     <
Running 2 test cases...
/Users/daknok/Desktop/libxxqlite/test/DatabaseTest.cpp:32: error in "P
                                                                      `??k??k
                                                                             ???k?%??k??k
         l
          p??k????k?": 
*** 1 failure detected in test suite "Master Test Suite"

这是我失败的测试用例:

BOOST_AUTO_TEST_CASE(Querying) {
  BOOST_CHECK_NO_THROW({
    XXQLite::Database db;
    XXQLite::Query query1 = db.createQuery("CREATE TABLE Foo (Id PRIMARY KEY)");
    XXQLite::Query query2
      = db.createQuery("SELECT * FROM Foo WHERE Id=? OR Id=? OR Id=?",
                       1, 2, 3);
  });
}

我真的不知道这里发生了什么。可能是这些奇怪的,不可读的错误消息的原因是什么? Boost不喜欢我的代码吗?我的Boost安装有问题吗?

2 个答案:

答案 0 :(得分:0)

根据示例here,问号之间的内容是您传递给BOOST_AUTO_TEST_CASE的内容:

BOOST_AUTO_TEST_CASE( test )
{
    BOOST_CHECK_NO_THROW( throw my_exception() );
}

输出:

Running 1 test case...
test.cpp(8): error in "test": exception thrown by throw my_exception()

也就是说,它应该打印"Querying"。这个名字怎么回事?如果将其更改为其他内容,它是否有效?

还可以尝试查看预处理器输出。如果您使用的是gcc,请使用-E标记。

答案 1 :(得分:0)

看来你有某种内存损坏。做一个干净的构建。试试valgrind。尝试不同的助推释放。