在哪里将测试数据放在R包中以进行R CMD CHECK

问题描述 投票:0回答:1

此问题与Q32328802 - testdata for testthat几乎相同。不同之处在于,我正在寻找与devtools::check相关的更具体的答案。 特别是,如何获得devtools::check()来识别并加载测试数据?

[tests/testthat.Rtests/testthat/setup-testdata.R的我的包结构在下面进行了描述(github链接在文章的底部)。我尝试了以下方法:

  • 根据上述链接的问题,我将测试数据放置在inst/testdata中。由于此操作无效,因此我也尝试了其他位置(例如tests/tests/testthat)。这些位置均无效。
  • 我也尝试过将helper-testdata.R重命名为setup-testdata.R并获得相同的失败结果。
  • devtools::check()似乎无法正确识别load(system.file(...))命令。同样,它无法识别我是否拼写出文件名(即,不要使用system.file())。忽略load命令也不起作用。

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 ...

任何帮助表示赞赏!

编辑完整代码的链接:

r unit-testing devtools r-package testthat
1个回答
0
投票

R CMD检查并不关心/ tests目录中的内容,只要有一个文件可以运行以执行您的测试即可(它们通过了)。同样,testthat不在乎/ tests下的其他目录。因此,您可以将文件放在/ tests / resources中的目录中。

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

© www.soinside.com 2019 - 2024. All rights reserved.