Boost dựa cấu trúc kiểm tra của chúng tôi trông như thế này:
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ấu trúc này đã được lựa chọn cho một dự án di sản, nơi mà chúng tôi đã phải quyết định trên cơ sở từng trường hợp cụ thể về những gì kiểm tra thêm và làm thế nào để các dự án thử nghiệm nhóm cho các mô-đun mã nguồn hiện có.
Những điều cần lưu ý:
- Unit đang kiểm tra luôn được biên soạn riêng rẽ với mã sản xuất.
- Các dự án sản xuất không tham chiếu đến mã thử nghiệm đơn vị.
- Các dự án thử nghiệm đơn vị bao gồm các tệp nguồn trực tiếp hoặc chỉ các thư viện tham chiếu, tùy thuộc vào ý nghĩa của việc sử dụng một tệp mã nhất định.
- Chạy các bài kiểm tra đơn vị được thực hiện qua bước đăng sau mỗi ut _ *. Vcproj
- Tất cả các bản dựng sản xuất của chúng tôi cũng tự động chạy các bài kiểm tra đơn vị. (Trong các kịch bản xây dựng của chúng tôi.)
Trong thế giới thực (C++) của chúng tôi, bạn phải cân bằng btw. vấn đề di sản, sự thuận tiện của nhà phát triển, thời gian biên dịch, vv Tôi nghĩ rằng cấu trúc dự án của chúng tôi là một sự cân bằng tốt. :-)
Nguồn
2010-08-27 13:37:14
Cách thay thế rất dễ xảy ra lỗi! – Wartin
Điều gì về các phụ thuộc ProjectRoot? ProjectRoot có một ProjectRootTests mà phụ thuộc vào tất cả các bài kiểm tra khác? – JBRWilkinson