Boost.Test выплевывает мусор вместо читаемых сообщений об ошибках - PullRequest
0 голосов
/ 04 февраля 2012

Я использую 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 голосов
/ 04 февраля 2012

Похоже, у вас какая-то порча памяти.Сделайте чистую сборку.Попробуйте Вальгринд.Попробуйте другой буст-релиз.

0 голосов
/ 04 февраля 2012

В соответствии с примером здесь , знак между вопросительными знаками - это то, что вы передали 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.

...