5

Tôi đang duy trì một gói autoconf và muốn tích hợp thử nghiệm tự động. Tôi sử dụng Boost Unit Test Framework để kiểm tra đơn vị của mình và có thể tích hợp thành công nó vào gói.automake: tự động chạy thử nghiệm đơn vị

Đó là nó có thể được biên dịch qua make check, nhưng không chạy (mặc dù tôi đọc rằng make check cả biên dịch và chạy thử nghiệm). Kết quả là, tôi phải chạy nó bằng tay sau khi xây dựng các bài kiểm tra mà là cồng kềnh.

Makefile.am trong thư mục test trông như thế này:

check_PROGRAMS = prog_test 
prog_test_SOURCES = test_main.cpp ../src/class1.cpp class1_test.cpp class2.cpp ../src/class2_test.cpp ../src/class3.cpp ../src/class4.cpp 
prog_test_LDADD = $(BOOST_FILESYSTEM_LIB) $(BOOST_SYSTEM_LIB) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) 

Makefile.am trong thư mục gốc:

SUBDIRS = src test 
dist_doc_DATA = README 
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4 

Chạy test/prog mang lại kết quả:

Running 4 test cases... 

*** No errors detected 

(I don' Tôi nghĩ bạn cần nội dung của các trường hợp thử nghiệm của tôi theo thứ tự t o trả lời câu hỏi của tôi, vì vậy tôi đã bỏ qua chúng bây giờ)

Vậy làm cách nào để tôi có thể thực hiện các thử nghiệm của mình mỗi lần chạy make check?

Trả lời

8

Ít nhất một cách để thực hiện việc này liên quan đến việc đặt biến số TESTS. Dưới đây là những gì documentation on automake nói về nó:

Nếu biến TESTS đặc biệt được xác định, giá trị của nó được xem là danh sách các chương trình hoặc tập lệnh chạy để thực hiện kiểm tra.

Vì vậy, thêm dòng

TESTS = $(check_PROGRAMS) 

nên hướng dẫn nó để chạy thử nghiệm trên make check.

+3

Từ https://www.gnu.org/software/automake/manual/html_node/Scripts_002dbased-Testsuites.html#index-TESTS: "Các chương trình được liệt kê trong check_PROGRAMS (và check_LIBRARIES, check_LTLIBRARIES ...) chỉ được tạo trong thời gian Bạn nên liệt kê ở đó bất kỳ chương trình nào cần thiết bởi các bài kiểm tra của bạn mà không cần phải được xây dựng bằng cách tạo tất cả. Lưu ý rằng check_PROGRAMS không tự động được thêm vào TESTS vì check_PROGRAMS thường liệt kê các chương trình được sử dụng bởi các bài kiểm tra, chứ không phải Tất nhiên bạn có thể đặt TESTS = $ (check_PROGRAMS) nếu tất cả các chương trình của bạn là các trường hợp thử nghiệm. " –

+0

Tôi nên thêm dòng nào vào tệp nào? Id không hoạt động cho cả 'test/Makefile.am' và' Makefile.am'. Vị trí có quan trọng không? – Paddre

+0

@Paddre, vị trí không thực sự quan trọng, thêm dòng vào 'test/Makefile.am', root makefile sẽ gọi nó. Hãy chắc chắn rằng 'Makefile.in' và' Makefile' được tạo lại sau khi thay đổi, một cách dễ dàng có thể là chạy 'make distclean'. – xaizek

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