我有一个使用AnotherWonderfulFunction((struct HappyStruct){ 42 });
testthat
所以,我是通过library(testthat)
source("src/MyFile.r")
results <- test_dir("tests", reporter="summary")
运行的。问题是即使出现测试失败,退出代码也始终为0。所以,如果有任何失败,我想打电话给Rscript
。但我似乎无法获得正确的代码来做到这一点。 stop
中是否有方法或字段,我应该查看是否存在任何错误?
答案 0 :(得分:0)
目前,我的解决方案正在迭代结果如下:
for (i in 1:length(results)) {
if (!is(results[[i]]$result[[1]], "expectation_success")) {
stop("There were test failures")
}
}
答案 1 :(得分:0)
您可以简单地将stop_on_failure=TRUE
作为参数传递给test_dir
。如果测试失败,则会引发错误并退出非零值。
例如:
results <- test_dir("mypath", stop_on_failure=TRUE)
已记录here
答案 2 :(得分:0)
您还可以调整jamesatha的答案以检索测试失败的次数。
failed.tests <- sapply(results, function(r) {
!is(r$result[[1]], "expectation_success")
})
然后,您将像以前一样失败:
if (any(failed.tests)) {
stop("There were test failures")
}
或者做更多定制的事情
if (any(failed.tests)) {
failed.test.count <- length(which(failed.tests))
stop(paste(failed.test.count,"failed tests is",failed.test.count,"too many!")
}