R CMD CHECK 的 R 包中的测试数据放在哪里

Where to put test data in R package for R CMD CHECK

此问题几乎与 Q32328802 - testdata for testthat 重复。不同之处在于,我正在寻找与 devtools::check 相关的更具体的 ci 答案。 Speci实际上,如何让 devtools::check() 识别和加载我的测试数据?

我的 tests/testthat.Rtests/testthat/setup-testdata.R 包结构如下所述(github 链接在 post 的底部)。我尝试了以下方法:

tests/:

testthat.R

library(synthACS)
library(testthat)

test_check("synthACS")

testthat/setup-testdata.R里面只有一行:

load(system.file("testdata", 'dat-acsdata.Rda', package= "synthACS"))
# run interactively, this line of code loads the data accurately.
# within devtools::check() it appears to return an empty string ("") for
# file location

检查我的包裹

R> devtools::test(synthACS)
══ Results ═════════════════════════

OK:       388
Failed:   0
Warnings: 0
Skipped:  0

R> devtools::check(synthACS)
...
─  checking tests ...
E  Running ‘testthat.R’ (1.5s)

── Test failures ─────────────────────

> library(testthat)
> 
> load(system.file("testdata", 'acsdata.rda', package= "synthACS"))
> test_check("synthACS")
 ----------- FAILURE REPORT -------------- 
... indicates that the data is not loaded ...

感谢ci任何帮助!

编辑完整代码的链接:

R CMD 检查不关心 /tests 目录中有什么,只要有文件它就可以 运行 执行您的测试(并且它们通过)。同样,testthat 不关心 /tests 下的其他目录。所以你可以把你的文件放在一个目录里,比如 /tests/resources.

此处示例:https://github.com/jeroen/openssl/tree/master/tests

正确答案是使用readRDS,即通过saveRDS

分别保存每个对象

例如

my_data <- readRDS(file= system.file("testdata", 'dat-mydata.rds', package= "synthACS"))