nostra struttura Testing basato Boost si presenta così:
ProjectRoot/
Library1/
lib1.vcproj
lib1.cpp
classX.cpp
...
Library2/
lib2.vcproj
lib2.cpp
toolB.cpp
classY.cpp
...
MainExecutable/
main.cpp
toolA.cpp
toolB.cpp
classZ.cpp
...
Tests/
unittests.sln
ut_lib1/
ut_lib1.vcproj (referencing the lib1 project)
ut_lib1.cpp (with BOOST_AUTO_TEST_CASE) - testing public interface of lib1
ut_classX.cpp - testing of a class or other entity might be split
into a separate test file for size reasons or if the entity
is not part of the public interface of the library
...
ut_lib2/
ut_lib2.vcproj (referencing the lib2 project)
ut_lib2.cpp (with BOOST_AUTO_TEST_CASE) - testing public interface of lib2
...
ut_toolA/
ut_toolA.vcproj (referencing the toolA.cpp file)
ut_toolA.cpp - testing functions of toolA
ut_toolB/
ut_toolB.vcproj (referencing the toolB.cpp file)
ut_toolB.cpp - testing functions of toolB
ut_main/
ut_main.vcproj (referencing all required cpp files from the main project)
ut_classZ.cpp - testing classZ
...
Tale struttura è stato scelto per un progetto legacy, dove abbiamo dovuto decidere, caso per caso, su quali esami per aggiungere e come progetti di test di gruppo per moduli esistenti di codice sorgente.
Cose da notare:
- Unità codice di test è sempre compilato separatamente dal codice di produzione.
- I progetti di produzione non fanno riferimento al codice di test dell'unità.
- I progetti di test delle unità includono direttamente i file di origine o solo le librerie di riferimento, a seconda di ciò che è logico dato l'uso di un determinato file di codice.
- L'esecuzione dei test dell'unità avviene tramite un passaggio post-produzione in ogni ut _ *. Vcproj
- Tutte le nostre build di produzione eseguono automaticamente anche i test unitari. (Nei nostri script di compilazione.)
Nel nostro mondo reale (C++) devi fare dei compromessi. problemi legacy, convenienza degli sviluppatori, tempi di compilazione, ecc. Penso che la struttura del nostro progetto sia un buon compromesso. :-)
fonte
2010-08-27 13:37:14
L'alternativa è molto soggetta a errori! – Wartin
E le dipendenze ProjectRoot? ProjectRoot ha un ProjectRootTest che dipende da tutti gli altri test? – JBRWilkinson