Я не использовал Поблочное тестирование до сих пор, и я намереваюсь принять эту процедуру. Я был впечатлен TDD, и конечно хотят дать ему попытку - я почти уверен, что это - способ пойти.
Повышение похоже на хороший выбор, главным образом потому что оно сохраняется. После этих слов как я должен пойти о реализации работы и изящной файловой структуры и структуры проекта? Я использую VS 2005 в Победе XP. Я гуглил об этом, и было более запутанным, чем просвещенный.
Наша структура тестирования на основе Boost выглядит следующим образом:
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
...
Эта структура была выбрана для устаревшего проекта, где нам нужно было решить в каждом конкретном случае, какие тесты добавить и как сгруппировать тест-проекты для существующих модулей исходного кода.
Примечание:
В нашем реальном (C++) мире вам приходится идти на компромиссы между прочим. унаследованные проблемы, удобство для разработчиков, время компиляции и т. д. Я думаю, что структура нашего проекта — хороший компромисс. :-)
Я поместил свой основной код в .libs или .dll, а затем мои проекты тестирования Boost зависели от этих проектов lib / dll. Так что я могу получить:
ProjectRoot
Lib1Source
Lib1Tests
Lib2Source
Lib2Tests
Альтернативой является хранение исходного кода в отдельной папке и добавление файлов как в основной проект приложений, так и в проект модульного тестирования, но я считаю это немного беспорядочным. YMMV.