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
?
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. " –
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
@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