Tôi đang viết một số kiểm tra cho gói R và muốn có R CMD check
xác minh rằng các chức năng hiển thị cảnh báo chính xác cho một số đầu vào nhất định. Nhưng tôi không thể tìm ra cách nắm bắt đầu ra cảnh báo để tôi có thể kiểm tra nó.Làm thế nào để viết một gói kiểm tra trong R để xem nếu cảnh báo được ném một cách chính xác?
Vì vậy, nếu tôi có một chức năng như:
throwsWarning<-function(x){
if(x>0){
warning('Argument "x" is greater than zero, results may be incorrect')
}
# do something useful ...
}
Tôi muốn một cái gì đó trong tập tin thử nghiệm của tôi như sau:
warningOutput <-try(throwsWarning(1))
if (warningOutput!='Argument "x" is greater than zero, results may be incorrect'){
stop('function "throwsWarning" did not produce correct warning when x>0')
}
Cho đến nay tôi đã tìm thấy các giải pháp phần càng tốt bằng cách thay đổi options
để cảnh báo được coi là lỗi và xung quanh với khối trycatch
. Cũng được coi là giá trị thử nghiệm của last.warning
, nhưng điều đó có vẻ nguy hiểm nếu cảnh báo không được ném (sẽ kiểm tra giá trị trước đó). Có vẻ như có một cách dễ dàng để làm điều này mà tôi đang thiếu?
Bạn dường như không sử dụng 'testthat' trong các bài kiểm tra của mình. – Spacedman