2011-08-26 35 views
7

Gần đây, tôi cần thêm kiểm tra đơn vị vào một chương trình cũ.Kiểm tra đơn vị trên chương trình có nhiều macro

Nhưng trong đó, có rất nhiều macro, như

#ifdef CONFIG_XXX 
do xxx 
#endif 

#ifdef CONFIG_YYY 
do yyy 
#endif 

Hiện nay, đường dẫn chương trình chung được bao phủ bởi các unit test. Vì vậy, tôi muốn thêm các xét nghiệm để bao gồm các phần macro bên trong (đường dẫn chương trình khác nhau). Có vẻ như tôi cần biên dịch và chạy chương trình của mình với các macro nhất định mỗi lần, và cách thiết kế bố cục các macro để che đường dẫn chương trình và giảm thời gian biên dịch thực sự không dễ dàng. Vì vậy, tôi có kế hoạch di chuyển tất cả các mã liên quan đến phần cứng đến thư mục vòm, bây giờ, macro đã được chuyển từ tệp c sang makefile, nhưng vẫn cần phải biên dịch với các macro nhất định mỗi lần để có được công việc UT.

Có ai có kinh nghiệm về vấn đề này trước đây không?

Cảm ơn nhận xét của bạn.

+1

Bạn có thể xem xét thay thế từng macro bằng 'if (config.XXX)' không? Bằng cách đó, bạn loại bỏ sự cần thiết phải biên dịch lại. –

+0

Tôi không thể, vì sự khác biệt của macro và nếu tuyên bố. –

+0

Ý của tôi là, hãy cấu trúc lại mã của bạn để lấy cấu trúc 'config' làm đầu vào. Cấu trúc này có thể có một tập hợp các biến cờ, mỗi biến tương ứng với một trong các macro của bạn. –

Trả lời

2

tôi nghĩ bạn chỉ có thể sử dụng gcc -D để tạo nhiều phiên bản của chương trình nhị phân. biên dịch và chạy chúng bằng tập lệnh để làm điều đó :)

+0

Trong câu hỏi: "Có vẻ như tôi cần biên dịch và chạy chương trình của tôi với các macro nhất định mỗi lần", gcc -D được sử dụng để thực hiện điều này. –