有什么办法可以重现devtools::check
使用的环境吗? ?
我的测试遇到了问题 devtools::test()
但在 devtools::check()
内失败.我现在的问题是,如何找到问题。 check
的举报只打印错误日志的最后几行,我找不到完整的测试报告。
checking tests ... ERROR
Running the tests in ‘tests/testthat.R’ failed.
Last 13 lines of output:
...
我知道
check
与 test
相比使用不同的环境但我不知道我应该如何调试这些问题,因为它们根本无法重现。特别是几个月前运行的这些测试,所以不知道在哪里寻找问题。编辑
实际上,我试图找到我的问题并找到了解决方案。但是要发布我的解决方案,我必须添加更多细节。
所以我的测试总是失败,因为我正在测试一个 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/