Chúng tôi phát triển một ứng dụng C++ sử dụng Visual Studio 2008 và kiểm tra đơn vị bằng cách sử dụng Boost.Test. Hiện tại, chúng tôi có một giải pháp riêng có chứa các bài kiểm tra đơn vị của chúng tôi.Đơn vị kiểm tra các lớp không xuất khẩu trong một DLL
Nhiều dự án của chúng tôi trong giải pháp cốt lõi tạo ra DLL. Chúng tôi bị giới hạn trong phạm vi kiểm tra bởi vì chúng tôi không thể kiểm tra các lớp không xuất.
Tôi có hai ý tưởng về cách này có thể được kiểm tra:
- xuất khẩu tất cả mọi thứ
- Đặt các bài kiểm tra bên trong DLL (cùng dự án và giải pháp) và sử dụng bên ngoài Á hậu Boost.Test của
Tôi không hoàn toàn chắc chắn những hạn chế sẽ là gì. Số 1 ở trên phá vỡ đóng gói cấp mô-đun, và số 2 có thể dẫn đến một DLL lớn hơn nhiều, trừ khi nó có thể chỉ bao gồm mã thử nghiệm trong cấu hình nhất định.
Vì vậy, có bất kỳ hạn chế nghiêm trọng nào đối với các phương pháp trên hay bạn có thể nghĩ ra các giải pháp khác không?
Tôi muốn gợi ý tại [CMake] (http://www.cmake.org) cung cấp một tính năng được gọi là "thư viện đối tượng". ('add_library (foo_obj OBJECT ...)') Trong các dự án của tôi, tôi xây dựng các nguồn vào các thư viện đối tượng, sau đó tôi liên kết thành * cả * DLL ('add_library (foo SHARED ... $)') * và * các trình điều khiển thử nghiệm của nó ('add_executable (foo_test ... $ )'). Đó là một biến thể của các câu trả lời dưới đây bằng cách sử dụng một hệ thống xây dựng khác (đó là lý do tại sao tôi thêm vào đây như một bình luận, không phải là một câu trả lời), nhưng nó giải quyết cùng một vấn đề. –
DevSolar