2014-08-31 25 views
12

Tôi có một loạt các thử nghiệm mà tôi không muốn chúng chạy trong quá trình kiểm tra CRAN hoặc xây dựng Travis CI. Chúng chạy dài hoặc có thể gây xung đột giao dịch/giao dịch đồng thời bằng văn bản cho cơ sở dữ liệu được nối mạng. Cách tiếp cận nào của việc tách chúng (từ các kiểm tra kiểm tra R CMD) hoạt động tốt nhất với testthat?mẫu thử nghiệm cho các thử nghiệm dài hạn

Tôi có nên đặt các thử nghiệm đó trong một thư mục riêng biệt không? Tôi có nên gắn thẻ tên tệp của họ và sử dụng regex không? (Ví dụ Using filter argument in test_package to skip tests bởi @Jeroen)

http://cran.r-project.org/web/packages/policies.html:

dài chạy thử nghiệm và mã họa tiết có thể được thực hiện tùy chọn cho kiểm tra, nhưng đảm bảo rằng các kiểm tra còn sót lại tập thể dục tất cả các tính năng của gói.

+1

Nếu bạn đặt chúng vào một thư mục khác trong thử nghiệm, bạn vẫn có thể kiểm tra chúng bằng 'test_dir()', nhưng chúng sẽ không chạy với 'test()' hoặc 'R CMD check'. Ví dụ. R6 có một số bài kiểm tra thủ công: https://github.com/wch/R6/tree/master/tests –

+0

Tôi thích @GaborCsardi, và cách các bài kiểm tra được chứa cùng nhau, nhưng phân biệt bằng 'test()' và 'test_dir () '. – wibeasley

+0

@GaborCsardi chính xác là những gì tôi đang tìm kiếm và [hoạt động tốt] (https://github.com/OuhscBbmc/REDCapR/commit/a93bf9e95c259068ba740596679f3943e7b521fa) cho các nhu cầu của gói của tôi. Nếu bạn thay đổi nhận xét của mình thành câu trả lời, tôi muốn cung cấp tín dụng phản hồi của bạn. – wibeasley

Trả lời

4

Nếu bạn đặt chúng trong thư mục khác trong tests, sau đó bạn vẫn có thể kiểm tra chúng bằng tay với test_dir(), nhưng họ sẽ không được chạy với test() hoặc R CMD check.

Ví dụ: R6 có một số kiểm tra thủ công: https://github.com/wch/R6/tree/master/tests

7

FYI: testthat 0.9 giờ đây có chức năng skip().

Tuy nhiên, tôi không thể tìm ra cách thức/địa điểm chính xác để sử dụng nó. Đặt bên trong hàm test_that() của chúng tôi, thử nghiệm vẫn chạy. Nếu bạn đặt nó trước testthat(), thì skip() sẽ phát ra lỗi.

+1

Cảm ơn bạn đã đề cập đến - Tôi đã nhìn thấy thông báo phát hành cách đây vài ngày. Ngay bên trong các hàm thử nghiệm, tôi đã thêm vào 'testthat :: skip_on_cran()' như thế nào. Nó phù hợp cho một số thử nghiệm của tôi, vì lý do chính tôi muốn một số kiểm tra thủ công là để nó sẽ không bị từ chối từ CRAN nếu máy chủ không phải là peppy ngay sau đó. Tôi không thực sự quan tâm nếu Travis-CI hoặc R-Forge kiểm tra thất bại, bởi vì nó dễ dàng chạy lại. – wibeasley

+5

Bạn có thể cho tôi biết, chính xác bạn đang sử dụng 'skip()' và/hoặc 'skip_on_cran()' như thế nào? Tôi cần phải đặt nó ở đâu để thực hiện một kiểm tra cụ thể bỏ qua khi chạy 'test_package()' hoặc 'CRTL + SHFT + T' trong RStudio? – Rappster

+2

Đây là liên kết đến [mã kiểm tra] (https://github.com/OuhscBbmc/REDCapR/blob/80e9fad0eb8a42375d1291360032c4ee5ec12b97/tests/testthat/test-read_oneshot.R#L10). Để chạy nó, tôi kiểm tra gói bằng 'CTRL + SHIFT + E' hoặc chỉ chạy thử nghiệm với [' test_results_checked <- devtools :: test() '] (https://github.com/OuhscBbmc/REDCapR /blob/80e9fad0eb8a42375d1291360032c4ee5ec12b97/utility_scripts/refresh.R#L12). – wibeasley

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