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.R
和 tests/testthat/setup-testdata.R
包结构如下所述(github 链接在 post 的底部)。我尝试了以下方法:
- 根据上面的链接问题,我将测试数据放在
inst/testdata
中。由于这不起作用,我还尝试了其他位置(例如 tests/
、tests/testthat
)。 None 这些位置有效。
- 我也试过将
helper-testdata.R
重命名为 setup-testdata.R
并得到相同的失败结果。
devtools::check()
似乎无法准确识别 load(system.file(...))
命令。它同样无法识别我是否拼写了文件名(即不要使用 system.file()
)。省略加载命令也不起作用。
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.
正确答案是使用readRDS
,即通过saveRDS
分别保存每个对象
例如
my_data <- readRDS(file= system.file("testdata", 'dat-mydata.rds', package= "synthACS"))
此问题几乎与 Q32328802 - testdata for testthat 重复。不同之处在于,我正在寻找与 devtools::check
相关的更具体的 ci 答案。 Speci实际上,如何让 devtools::check()
识别和加载我的测试数据?
我的 tests/testthat.R
和 tests/testthat/setup-testdata.R
包结构如下所述(github 链接在 post 的底部)。我尝试了以下方法:
- 根据上面的链接问题,我将测试数据放在
inst/testdata
中。由于这不起作用,我还尝试了其他位置(例如tests/
、tests/testthat
)。 None 这些位置有效。 - 我也试过将
helper-testdata.R
重命名为setup-testdata.R
并得到相同的失败结果。 devtools::check()
似乎无法准确识别load(system.file(...))
命令。它同样无法识别我是否拼写了文件名(即不要使用system.file()
)。省略加载命令也不起作用。
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.
正确答案是使用readRDS
,即通过saveRDS
例如
my_data <- readRDS(file= system.file("testdata", 'dat-mydata.rds', package= "synthACS"))