R:如何判断testthat :: test_dir的结果是否有任何测试失败

时间:2017-08-24 20:52:48

标签: r testing testthat

我有一个使用AnotherWonderfulFunction((struct HappyStruct){ 42 });

的小型测试程序
testthat

所以,我是通过library(testthat) source("src/MyFile.r") results <- test_dir("tests", reporter="summary") 运行的。问题是即使出现测试失败,退出代码也始终为0。所以,如果有任何失败,我想打电话给Rscript。但我似乎无法获得正确的代码来做到这一点。 stop中是否有方法或字段,我应该查看是否存在任何错误?

3 个答案:

答案 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!")
}