r - 测试在 devtools::check 中失败但在 devtools::test 中有效

标签 r devtools testthat

有什么办法可以重现devtools::check使用的环境吗? ?

我的测试遇到了问题 devtools::test()但在 devtools::check() 内失败.我现在的问题是,如何找到问题。 check的举报只打印错误日志的最后几行,我找不到完整的测试报告。

checking tests ... ERROR
Running the tests in ‘tests/testthat.R’ failed.
Last 13 lines of output:
...

我知道checktest 相比使用不同的环境但我不知道我应该如何调试这些问题,因为它们根本无法重现。特别是几个月前运行的这些测试,所以不知道在哪里寻找问题。

编辑

实际上,我试图找到我的问题并找到了解决方案。但是要发布我的解决方案,我必须添加更多细节。

所以我的测试总是失败,因为我正在测试一个 Markdown 脚本,如果它运行没有错误,然后我检查了一些环境变量是否设置正确。这些是我用脚本计算的结果以及我设置的标准设置。因此,如果我在开发后忘记更改某些设置,我想收到警告...

无论如何,由于它是一个 Markdown 脚本,我不得不提取代码并且我使用了这篇文章中的评论knitr: run all chunks in an Rmarkdown document使用 knitr::purl获取代码和 sys.source执行它。
runAllChunks <- function(rmd, envir=globalenv()){
  # as found here https://stackoverflow.com/questions/24753969
  tempR <- tempfile(tmpdir = '.', fileext = ".R")
  on.exit(unlink(tempR))
  knitr::purl(rmd, output=tempR, quiet=TRUE)
  sys.source(tempR, envir=envir)
}

出于某种原因,这可能会在几周后产生错误(不确定我最近安装了哪些新软件包......)。但是由于有新评论,我可以使用 knitr::knit它也执行代码,这按预期工作,现在我的测试不再提示。

所以最后,我不知道问题到底出在哪里,但现在正在起作用。

最佳答案

这是一个 known issue与 testthat。解决方法是在 tests/testthat.R 的第一行添加以下内容:

Sys.setenv(R_TESTS="")

关于r - 测试在 devtools::check 中失败但在 devtools::test 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41846465/

相关文章:

r - 为什么我们不能使用 .作为带有 %>% 的匿名函数中的参数

google-chrome - 在 Firefox/Chrome devtools 中有没有办法在连接后发送/编辑 websocket 消息

Rcpp安装

r - 当条件不满足时跳过所有测试

r - 如何设置testthat以进行R CMD检查?

r - 用于删除一个变量与数据集中所有其他变量的交互项的语法

r - 将行附加到文件

与 Active Directory 集成的 Azure 应用服务上的 R Shiny 应用

R 检查包中的函数是否是从包 fun 或外部调用的

r - R包中打印功能的测试覆盖率