2009-09-14 75 views
0

我有一個項目,看起來像這樣:我應該如何在我的項目中組織測試用例?

 
xdc/ 
    hubactions/ 
    hubconnection.cpp 
    hubconnection.h 
    uiinterface/ 
    readme 
    uiconnection.cpp 
    uiconnection.h 
    ... 
    uiactions/ 
    readme 
    connectaction.cpp 
    connectaction.h 
    quitaction.cpp 
    quitaction.h 
    ... 
    utils/ 
    parser.cpp 
    parser.h 
    ... 

現在我要開始測試項目變得太大了。

那麼我應該如何組織我的測試呢?我想出了兩個選項:

選項1

 
xdc/ 
    hubactions/ 
    hubconnection.cpp 
    hubconnection.h 
    uiinterface/ 
    readme 
    uiconnection.cpp 
    uiconnection.h 
    ... 
    uiactions/ 
    readme 
    connectaction.cpp 
    connectaction.h 
    quitaction.cpp 
    quitaction.h 
    ... 
    utils/ 
    parser.cpp 
    parser.h 
    ... 
    tests/ 
    utils/ 
     parsertest.cpp 
    uiinterface/ 
     uiconnectiontest.cpp 
    uiactions/ 
     connectactiontest.cpp 
     quitactiontest.cpp 
    hubactions/ 
     fakehubconnection.cpp 
     fakehubconnection.h 
    ... 

選項2

 
xdc/ 
    hubactions/ 
    tests/ 
     fakehubconnection.cpp 
     fakehubconnection.h 
    hubconnection.cpp 
    hubconnection.h 
    uiinterface/ 
    tests/ 
     uiconnectiontest.cpp 
    readme 
    uiconnection.cpp 
    uiconnection.h 
    ... 
    uiactions/ 
    tests/ 
     connectactiontest.cpp 
     quitactiontest.cpp 
    readme 
    connectaction.cpp 
    connectaction.h 
    quitaction.cpp 
    quitaction.h 
    ... 
    utils/ 
    tests/ 
     parsertest.cpp 
    parser.cpp 
    parser.h 
    ... 

哪種方法更好?我能以不同的/更好的方式做到嗎?

謝謝!

回答

1

我喜歡Apache Software Foundation(ASF)及其主要構建工具Maven之後的代碼結構。該結構是以Java爲中心的,但可以應用於其他語言。該best C++ plug-in for Maven,在我看來,遵循C++的ASF結構,看起來像這樣:

project/ 
    /src 
    /main 
     /include 
     /c++ 
    /test 
     /include 
     /c++ 

我用這個結構和它的作品順利,並與其他語言編寫的我的項目是一致的。

+0

謝謝,我現在正在爲此項目選擇此方法:) – jrharshath 2009-09-20 07:19:52

1

我不認爲有更好的選擇。

我個人傾向於選項2,因爲它使測試在物理上與正在測試的代碼接近。

這麼說,我敢肯定有人會隨着一個非常好的理由使用選項1

第三種選擇(我真的不喜歡)可能是測試存儲與代碼正在測試(見下文)。然而,這往往會弄亂你的目錄結構太

 
xdc/ 
    hubactions/ 
    fakehubconnection.cpp 
    fakehubconnection.h 
    hubconnection.cpp 
    hubconnection.h 
    uiinterface/ 
    uiconnectiontest.cpp 
    readme 
    uiconnection.cpp 
    uiconnection.h 
    ... 
    uiactions/ 
    connectactiontest.cpp 
    quitactiontest.cpp 
    readme 
    connectaction.cpp 
    connectaction.h 
    quitaction.cpp 
    quitaction.h 
    ... 
    utils/ 
    parsertest.cpp 
    parser.cpp 
    parser.h 
    ... 
1

的論據選項1是,這使得之間的生產代碼和測試代碼更清晰的分離。因此,測試代碼不太可能成爲生產代碼的一部分。

相關問題