Gần đây tôi đã chuyển đổi hệ thống xây dựng của mình thành tự động/autoconf. Trong dự án của tôi, tôi có một vài bài kiểm tra đơn vị cần một số tệp dữ liệu đầu vào trong direcory từ nơi chúng được chạy. Khi tôi chạy làm cho distcheck và nó cố gắng xây dựng VPATH, các bài kiểm tra thất bại vì họ dường như không chạy từ thư mục mà các tập tin đầu vào được. Tôi đã tự hỏi nếu có một số sửa chữa nhanh chóng cho việc này. Ví dụ, bằng cách nào đó tôi có thể nói cho hệ thống không chạy các kiểm tra này trên làm cho distcheck (nhưng vẫn chạy chúng trên thực hiện kiểm tra)? Hoặc để cd vào thư mục mà các tập tin được trước khi chạy các bài kiểm tra?làm cho việc kiểm tra và kiểm tra cần các tệp đầu vào
Trả lời
Giải pháp điển hình là viết các bài kiểm tra để chúng tìm trong thư mục nguồn cho các tệp dữ liệu. Ví dụ: bạn có thể tham chiếu $srcdir
trong thử nghiệm hoặc chuyển đổi test
thành test.in
và tham khảo @[email protected]
.
Nếu xét nghiệm của bạn là tất cả trong thư mục nguồn, bạn có thể chạy tất cả các bài kiểm tra trong thư mục đó bằng cách thiết lập TESTS_ENVIRONMENT trong Makefile.am:
TESTS_ENVIRONMENT = cd $(srcdir) &&
này sẽ thất bại nếu một số xét nghiệm của bạn được tạo ra bởi cấu hình và do đó chỉ sống trong thư mục xây dựng, trong trường hợp này bạn có thể chọn lọc cd với một cái gì đó như:
TESTS_ENVIRONMENT = { test $${tst} = mytest && cd $(srcdir); true; } &&
Cố gắng sử dụng TESTS_ENVIRONMENT như thế này là mong manh lúc tốt nhất, và nó sẽ là tốt nhất để viết các bài kiểm tra để họ nhìn vào nguồn dire ctory cho các tập tin dữ liệu.
Tôi đã có cùng một vấn đề và giải pháp được sử dụng tương tự như của William. Makefile.am của tôi trông giống như sau:
EXTRA_DIST = testdata/test1.dat
AM_CPPFLAGS = -DDATADIR=\"$(srcdir)/\"
Sau đó, trong unittest của tôi, tôi sử dụng datadir xác định:
string path = DATADIR "/testdata/test1.dat"
này làm việc với make check
và make distcheck
.
- 1. Kiểm tra tệp đầu vào JQuery
- 2. CRC kiểm tra các tệp
- 3. Kiểm tra đầu vào với jQuery.contains()
- 4. Kiểm tra đầu vào trống với jQuery
- 5. Kiểm tra PHPUnit cho Đầu ra JSON
- 6. Kiểm tra tệp mà không cần mở tệp bằng C++?
- 7. Nodejs - Kiểm tra các tệp ẩn
- 8. cắt và kiểm tra xem sản phẩm nào đầu vào
- 9. JQuery Kiểm tra xem đầu vào có trống không kiểm tra tải không?
- 10. Codeception - kiểm tra Chấp nhận làm việc nhưng chức năng kiểm tra không
- 11. Kiểm tra NSURL cho loại tệp UTI/
- 12. Kiểm tra các tệp HTTPS bằng MAMP
- 13. Khung kiểm tra nào cho Javascript hỗ trợ Kiểm tra mà không cần trình duyệt?
- 14. Kiểm tra SBT-phụ thuộc vào Multiprojects: Làm cho mã kiểm tra có sẵn cho các dự án phụ thuộc
- 15. Kiểm tra kho svn mà không cần tệp .svn
- 16. Netbeans và tạo các kiểm tra JUnit
- 17. Điều gì cần kiểm tra khi viết Bài kiểm tra Đơn vị?
- 18. DRY cho các kiểm tra JMeter
- 19. Đã kiểm tra và ngoại lệ không được kiểm tra
- 20. Radio Button Kiểm tra không kiểm tra
- 21. Cách kiểm tra thư mục để kiểm tra xem tệp mới có được thêm vào không?
- 22. IDisposable: là cần thiết để kiểm tra null vào cuối {}?
- 23. Kiểm tra JQuery cho Checkbox được kiểm tra
- 24. angularjs - bộ kiểm tra kiểm tra
- 25. Làm thế nào để bạn tạo các kiểm tra cho "thực hiện kiểm tra" với các autotools GNU
- 26. Làm cách nào để bạn kiểm tra/thay đổi mã chưa được kiểm tra và không thể kiểm tra?
- 27. Cách kiểm tra xem một trong các loại đầu vào của tệp có giá trị không?
- 28. Kiểm tra đơn vị trong QTestLib - chạy thử nghiệm/kiểm tra đơn trong lớp/tất cả các bài kiểm tra
- 29. Kiểm tra đầu vào tiêu chuẩn trong C#
- 30. VS 2008 và Team Explorer- đã kiểm tra các tệp
Thử nghiệm của tôi nằm trong src/some/path và các tệp dữ liệu nằm trong cùng một thư mục. Tôi đã thử các thử nghiệm TESTS_ENVIRONMENT = cd $ (srcdir) && nhưng nó không hoạt động vì bây giờ nó không tìm thấy tệp thi hành nữa. Sao chép các tập tin dữ liệu cần thiết vào thư mục hiện tại cũng không hoạt động bởi vì, trong một xây dựng VPATH, bạn dường như không có quyền ghi vào thư mục mà các bài kiểm tra được chạy. –
@Martin, bạn không có quyền ghi vào thư mục nguồn, nhưng bạn có quyền ghi vào thư mục xây dựng. Bạn sao chép tệp như thế nào? Chỉ cần thêm 'EXTRA_DIST = datafile' vào Makefile.am và' cp $ {srcdir}/datafile .' trong test.in sẽ hoạt động. Tuy nhiên, nếu thử nghiệm đang chạy từ thư mục nguồn thì cố gắng sao chép sẽ không thành công do quyền ghi. Tôi nghi ngờ bạn có một số bài kiểm tra được chạy từ thư mục xây dựng và một số được chạy từ thư mục nguồn. (Kiểm tra có tên '* .in' là (có thể) chạy từ thư mục xây dựng, trong khi các thử nghiệm khác được chạy từ thư mục nguồn.) –
Điều này trông giống như những gì tôi đang tìm kiếm, nhưng điều này dường như không hoạt động với Automake 1.15, thật không may: với điều này, nó tạo ra các tệp '* .log' và' * .trs' trong thư mục nguồn (đã lỗi), nhưng vẫn tìm chúng trong thư mục xây dựng và, tất nhiên, không tìm thấy chúng ở đó (đó là gây tử vong). –