2011-03-06 14 views
7

की त्रुटि सूची में नहीं दिखाए गए हैं, मैं देशी सी ++ परियोजनाओं के लिए बूस्ट.स्ट यूनिट टेस्ट फ्रेमवर्क का उपयोग कर रहा हूं। सब ठीक काम कर रहे हैं, लेकिन मुझे विजुअल स्टूडियो 2010 में अपग्रेड करने के बाद एक समस्या मिली है: पोस्ट बिल्ड चरण के रूप में परीक्षण चलाने के बाद असफल परीक्षणों के बारे में संदेश अब त्रुटि सूची में नहीं दिखाए गए हैं। Boost के संयोजन के बाद से यह एक दयालुता है। देशी सी ++ प्रोजेक्ट के साथ सबसे नज़दीक आया (हालांकि अभी भी दूर दूर जा रहा है) आराम के लिए मैं यूनिट परीक्षण प्रबंधित परियोजनाओं से उपयोग किया जाता हूं। मैं Boost.Test here के लेखकों द्वारा अनुशंसित विन्यास का उपयोग कर रहा हूं। क्या कोई इस नाबालिग के साथ मदद कर सकता है लेकिन थोड़ा आराम कम करने वाला मुद्दा?Boost.Test त्रुटि संदेश अब VS2010

सादर,

पॉल

+0

क्या संकलक त्रुटि-संदेश प्रारूप बीटीडब्ल्यू बदल गया है। वीएस -2010 और पिछले संस्करण, ताकि आईडीई Boost.Test संदेशों को पार्स नहीं कर सके? आउटपुट विंडो में आप क्या देखते हैं? –

+0

इस मुद्दे को थोड़ा सा स्पष्ट करने के लिए: विफल परीक्षणों के बारे में संदेश VS के आउटपुट फलक में ठीक से दिखाए जाते हैं। यह * त्रुटि सूची * फलक में क्या प्रविष्टि है ... –

उत्तर

3

दृश्य स्टूडियो संकलक त्रुटियों के लिए 2005 उत्पादन बिल्ड इस तरह दिखता है:

|.\ut_TEMPLATE.cpp(8) : error C2065: 'x' : undeclared identifier 

जबकि दृश्य स्टूडियो 2010 संकलक त्रुटियों उत्पादन विंडो में इस तरह दिखेगा:

|1>ut_TEMPLATE.cpp(8): error C2065: 'x' : undeclared identifier 

(संपादित करें:द्वारा टिप्पणी देखें । >1 के बारे में)

अब

, crosschecking क्या BOOST_ERROR आउटपुट (अगर आप पोस्ट का निर्माण चरण में अपने exe) है पुन: पेश करने के लिए एक सरल printf का उपयोग कर सकते हैं:

वी.एस. 2005:

|./ut_TEMPLATE.cpp(8): error in "test_TEST": check true == false failed [1 != 0] 

वी.एस. 2010:

|1> ut_TEMPLATE.cpp(10): error in "test_TEST": check true == false failed [true != false] 

थोड़ा सा अंतर है, लेकिन बहुत ज्यादा नहीं है और एक मैनुअल printf के साथ आगे के परीक्षण:

printf("ut_TEMPLATE.cpp(00): error : in \"test_TEST\": check true == false failed [true != false]" "\n"); 
            ^^^ .. Note colon here 

हम भी त्रुटि के रूप में यह उत्पादन पहचान करने के लिए VS 2010 मिलती है:

BOOST_AUTO_TEST_CASE(test_TEST) 
{ 
    printf("ut_TEMPLATE.cpp(00): error : in \"test_TEST\": check true == false failed [true != false]" "\n"); 
    BOOST_CHECK_EQUAL(true, false); 
} 

1>------ Build started: Project: ut_TEMPLATE, Configuration: Release Win32 ------ 
1> ut_TEMPLATE.cpp 
1> ut_TEMPLATE.vcxproj -> ....\UnitTests\ut_TEMPLATE\..\..\..\Release\ut_TEMPLATE.exe 
1> Running 1 test case... 
1>ut_TEMPLATE.cpp : error : in "test_TEST": check true == false failed [true != false] 
1> ut_TEMPLATE.cpp(9): error in "test_TEST": check true == false failed [true != false] 
1>C:\Programme\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: The command ""....\\ut_TEMPLATE.exe" --result_code=no --report_level=no 
1>C:\Programme\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd" exited with code -1. 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

तो यह जाहिर होता आप/हम/Boost.Test यह उत्पादन है बदलाव करने ताकि VS2010 आईडीई अभी भी पहचानता है की जरूरत है त्रुटि संदेश

+0

1> दर्शाता है कि रेखा का निर्माण किस प्रकार से होता है, इसलिए जब आप क्वाड-कोर पीसी पर निर्माण करते हैं, और आपके पास समाधान में कई परियोजनाएं हैं, तो यह उनमें से 4 को एक साथ बनाएं, और उन्हें 2> 3> आदि के साथ उपसर्ग करें। – gbjbaanb

+0

सभी को धन्यवाद ... मैं मानता हूं कि इस बार मैंने अपने आप पर ज्यादा जांच करने से पहले समुदाय से पूछने का फैसला किया था। कार्यालय में मैं अभी भी वीएस -2008 का उपयोग कर रहा हूं (बूस्ट 1.43 को अनुकूलित और मैन्युअल रूप से बनाया गया है) जहां Boost.Test से त्रुटि संदेश ठीक से पहचाने जाते हैं। घर पर मुझे बूस्ट परामर्श द्वारा प्रदान की गई बाइनरी से स्थापित वीएस -2010 + बूस्ट 1.44 मिला है। इसके अलावा, वीएस -2010 सीधे आईडीई से निर्माण प्रक्रिया पर अधिक बढ़िया नियंत्रण प्रदान करता प्रतीत होता है - इससे पहले कि मैं बूस्ट के आसपास ट्विक करना शुरू कर दूं। सबसे पहले मुझे अन्य संभावनाओं की जांच करने की आवश्यकता है। सफलता पर रिपोर्ट करेंगे ... –

+1

कृपया टिकट बूस्ट दर्ज करें। नवीनतम –

4

आप एक रिहाई के लिए प्रतीक्षा करें और (खुद के द्वारा फ़ॉर्मेटर ठीक करने के लिए

खुला

BOOST_PATH \ बढ़ावा \ परीक्षण \ impl \ compiler_log_formatter.ipp

परिवर्तन चाहते हैं नहीं करना चाहते हैं boost_1_46_1 में लाइन 163)

output << "error in \"" << test_phase_identifier() << "\": "; 

को
output << "error : in \"" << test_phase_identifier() << "\": "; 

और फिर से bjam के साथ पुन: संकलित करें।

cd BOOST_PATH 
bjam.exe 
+0

बहुत बहुत धन्यवाद। मुझे खुद को पोस्ट करना चाहिए था (पहले से ही ठीक किया गया है) ... –