Nasz doładowania opiera struktura Testowanie wygląda następująco:
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
...
Struktura ta została wybrana do projektu Legacy, gdzie mieliśmy zdecydować, na zasadzie case-by-case na co testuje dodać i jak grupowe projekty testowe dla istniejących modułów kodu źródłowego.
warte Uwaga:
- Jednostka Kod Testowanie jest zawsze zestawiane oddzielnie od kodu produkcyjnego.
- Projekty produkcyjne nie odwołują się do kodu testu jednostkowego.
- Projekty testowania jednostek obejmują pliki źródłowe bezpośrednio lub tylko biblioteki odniesień, w zależności od tego, co ma sens z uwagi na użycie określonego pliku kodu.
- Uruchamianie testów jednostkowych odbywa się za każdym razem po kroku kompilacji _ *. Vcproj
- Wszystkie nasze konstrukcje produkcyjne automatycznie przeprowadzają również testy jednostkowe. (W naszych skryptach kompilacji).
W naszym prawdziwym (C++) świecie musisz dokonać kompromisów. problemy ze starszymi wersjami, wygoda dla programistów, czasy kompilacji itp. Uważam, że nasza struktura projektu jest dobrym kompromisem. :-)
Alternatywa jest bardzo podatna na błędy! – Wartin
Co z zależnościami ProjectRoot? Czy ProjectRoot ma ProjectRootTests, który zależy od wszystkich innych testów? – JBRWilkinson