2010-06-03 31 views
6

Tôi chưa sử dụng Kiểm tra Đơn vị cho đến nay và tôi có ý định áp dụng quy trình này. Tôi đã rất ấn tượng với TDD và chắc chắn muốn thử nó - Tôi gần như chắc chắn đó là cách để đi.Cấu trúc tệp và cấu trúc dự án yêu thích/được đề xuất của bạn cho Bài kiểm tra đơn vị bằng cách sử dụng Boost là gì?

Tăng cường trông giống như một lựa chọn tốt, chủ yếu là vì nó được duy trì. Với điều đó đã nói, làm thế nào tôi nên đi về thực hiện một cấu trúc tập tin làm việc và thanh lịch và cấu trúc dự án? Tôi đang sử dụng VS 2005 trong Win XP. Tôi đã googling về điều này và đã nhầm lẫn hơn giác ngộ.

Trả lời

2

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. :-)

0

Tôi đã đổ mã lõi của mình thành một trong hai .libs hoặc .dlls và sau đó có các dự án thử nghiệm Boost của tôi phụ thuộc vào các dự án lib/dll này. Vì vậy, tôi có thể kết thúc với:

ProjectRoot 
    Lib1Source 
    Lib1Tests 
    Lib2Source 
    Lib2Tests 

Cách khác là để lưu trữ nguồn của bạn trong một thư mục riêng biệt và thêm các tập tin cho cả hai dự án ứng dụng chính của bạn và các dự án thử nghiệm đơn vị nhưng tôi tìm thấy điều này một chút lộn xộn. YMMV.

+2

Cách thay thế rất dễ xảy ra lỗi! – Wartin

+0

Đ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

Các vấn đề liên quan