2008-09-20 41 views
2

我最近開始使用C++和KDevelop開發個人編碼項目。儘管我剛剛開始剽竊,但從長遠來看,如果我在進一步深入之前建立適當的單元測試套件,我認爲它會更好。我創建了一個獨立的測試運行器可執行文件作爲子項目,並且我添加到它的測試似乎正常工作。到目前爲止,成功。但是,我真的很想讓我的單元測試在我每次構建時都運行,而不僅僅是在我明確運行它們時。這將是特別真實的,因爲我將我製作的便箋分成了各種便利庫,每個便箋可能都有自己的測試可執行文件。我不想手動運行它們,而是希望讓它們作爲我構建過程的最後一步來運行。我已經查看了項目菜單和automake管理器中的所有選項,但我無法弄清楚如何設置它。在KDevelop中,如何將自定義構建步驟添加到基於automake的項目中?

我想這可能可以通過手工編輯makefile來完成。不幸的是,我的makefile-fu有點弱,而且我還擔心KDevelop可能會在下次通過IDE更改某些內容時手動覆蓋我手動完成的任何更改。因此,如果有關於如何通過KDevelop本身來做到這一點的選項,我更願意這樣做。

有誰知道我可以如何讓KDevelop運行測試可執行文件作爲構建過程的一部分嗎?謝謝!

(我不是100%依賴於KDevelop的,如果KDevelop的不能做到這一點,否則,如果有,讓這更簡單的IDE,我可以說服切換。)

回答

3

雖然你可以操縱默認`make`目標來運行測試, 所以一般不建議,因爲

make

每次調用時將運行所有測試。 您應該使用「檢查」目標代替 ,這是軟件包中接受的準標準。當您運行

make check

然後,您可以輕鬆地配置KDevelop的 運行「做檢查」,而不只是「讓」 通過這樣做, 的測試纔開始。

由於您使用automake(通過KDevelop), 您不需要自己編寫「檢查」目標。 相反,只需編輯您的`Makefile.am`並設置一些變量:

 
TESTS = ... 

請看看在 automake documentation, "Support for test suites" 進一步的信息。

0

我得到它的工作是這樣的:

$ cat src/base64.c 
//code to be tested 
int encode64(...) { ... } 

#ifdef UNITTEST 
#include <assert.h> 
int main(int argc, char* argv[]) 
{ 
    assert(encode64(...) == 0); 
    return 0; 
} 
#endif //UNITTEST 
/* end file.c */ 

$ cat src/Makefile.am 
... 
check_PROGRAMS = base64-test 
base64_test_SOURCES = base64.c 
base64_test_CPPFLAGS = -I../include -DUNITTEST 
TESTS = base64-test 

一個化妝檢查將建立的src /基於64位測試並運行它:

$ make check 
... 
PASS: base64-test 
================== 
All 1 tests passed 
================== 
... 

現在我試圖封裝一切作爲這樣使用的m4宏:

MAKE_UNITTEST(base64.c) 

哪應該產生一些東西像上面的解決方案。

希望這會有所幫助。

相關問題