2012-02-03 10 views
0

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.Test의 출력 정말 여기에서 무슨 일이 일어나고 있는지 전혀 모르는

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 설치에 문제가 있습니까?

+0

휴, 저렇게 느껴집니다. 빌드를 정리하고 처음부터 컴파일하려고 했습니까? – Thomas

+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 플래그를 사용하십시오.

0

어떤 종류의 메모리가 손상된 것으로 보입니다. 깨끗한 빌드를하십시오. valgrind 해봐. 다른 부스트 릴리스를 시도하십시오.

+0

음 ... valgrind가 세그먼트 오류로 인해 충돌합니다. –