2008-10-21 28 views
9

Câu hỏi của tôi khá liên quan đến something asked before nhưng tôi cần một số lời khuyên thực tế.Thêm bài kiểm tra đơn vị vào dự án hiện tại

Tôi có "Làm việc hiệu quả với mã cũ" trong tay và tôi đang sử dụng lời khuyên từ cuốn sách khi tôi đọc nó trong dự án tôi đang làm việc. Dự án là một ứng dụng C++ bao gồm một vài thư viện nhưng phần chính của mã được biên dịch thành một tệp thực thi duy nhất. Tôi đang sử dụng googletest để thêm các bài kiểm tra đơn vị vào mã hiện tại khi tôi phải chạm vào một cái gì đó.

Vấn đề của tôi là làm thế nào tôi có thể thiết lập quy trình xây dựng để có thể xây dựng các bài kiểm tra đơn vị của mình vì có hai tệp thi hành khác nhau cần chia sẻ mã trong khi tôi không thể trích xuất mã từ ứng dụng "đang kiểm tra" của tôi thư viện. Ngay bây giờ tôi đã thực hiện quá trình xây dựng của mình cho ứng dụng giữ liên kết kiểm tra đơn vị đối với các tệp đối tượng được tạo ra từ quá trình xây dựng của ứng dụng chính nhưng tôi thực sự không thích nó. Có đề xuất nào không?

Trả lời

1

Nếu ứng dụng thử nghiệm của bạn chỉ được liên kết các đối tượng các tệp cần kiểm tra thì bạn đã có hiệu quả đối xử với chúng như một thư viện, có thể nhóm các tệp đối tượng đó thành một thư viện riêng biệt cho ứng dụng chính và ứng dụng thử nghiệm. Nếu bạn không thể sau đó tôi không thấy rằng những gì bạn đang làm là quá xấu một thay thế.

Nếu bạn phải liên kết các tệp đối tượng khác không được kiểm tra thì đó là dấu hiệu của các phụ thuộc cần được chia nhỏ mà bạn có một cuốn sách hoàn hảo. Chúng tôi có vấn đề tương tự và sử dụng một hệ thống như được đề xuất bởi Vlion

0

Cá nhân tôi sẽ tiếp tục thực hiện như bạn đang thực hiện hoặc xem xét việc tạo tập lệnh xây dựng, làm cho ứng dụng đích và kiểm tra đơn vị cùng một lúc (hai kết quả nhị phân tắt cùng một cơ sở mã). Có mùi có mùi nhưng rất thực tế.

Kêu gọi bạn và chúc bạn may mắn với thử nghiệm của mình.

0

Tôi thích một thử nghiệm thực thi hơn cho mỗi thử nghiệm. Điều này cho phép đường nối thời gian liên kết và cũng giúp cho phép TDD khi bạn có thể làm việc trên một đơn vị và không phải lo lắng về phần còn lại của mã của bạn.

Tôi làm cho các thư viện phụ thuộc vào tất cả các thử nghiệm. Hy vọng rằng điều này có nghĩa là các thử nghiệm của bạn chỉ chạy khi mã thực sự thay đổi.

Nếu bạn gặp lỗi, kiểm tra sẽ làm gián đoạn quá trình xây dựng ở đúng vị trí.

+0

Tại sao bỏ phiếu xuống? –

2

tôi sẽ phác thảo ra một cấu trúc makefile bạn có thể sử dụng:

all: tests executables 

run-tests: tests 
    <commands to run the test suite> 

executables: <file list> 
    <commands to build the files> 

tests: unit-test1 unit-test2 etc 

unit-test1: ,files that are required for your unit-test1> 
    <commands to build unit-test1> 

Đó là khoảng những gì tôi làm, như một nhà phát triển duy nhất về dự án của tôi

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