为什么devtools :: document()会尝试记录测试?

时间:2017-08-21 11:31:24

标签: r devtools testthat

我正在处理一个包(this one),我根据testthat workflow设置了我的测试。这包括在./testthat/testthat/文件夹和./testthat/testthat.R文件中进行我的测试,如下所示:

library(testthat)
library(rpostgisLT)
test_check("rpostgisLT")

所有测试都要求附加testthat包(因此我没有使用testthat::function引用。

刚刚重新启动R(没有附加testthat)后,我尝试运行devtools::document()但它会中断,因为它找不到我在测试中使用的testthat函数。当然,在附加testthat devtools::document()之后,

为什么devtools::document()会查看/tests文件夹?它不应该只记录/R文件夹中的功能吗?

1 个答案:

答案 0 :(得分:0)

devtools::document()roxygen2::roxygenize的包装器。如果您阅读后者的文档,它会说:

  

请注意,roxygen2是一个动态文档系统:它通过检查包中的加载对象来使用。这意味着您必须能够加载包以便记录它。

还有一个论点load_code说:

  

用于加载包目录中所有R代码的函数。它通过包的路径调用,它应该返回一个包含所有源代码的环境。

因此,看起来它正在读取所有.R个文件。但是,我觉得它会跳过名称中以test_开头的所有.R文件(否则我会看到我的包也会中断)。我认为问题在于您的helper_db.R文件,其中您在不以testthat开头的文件中使用test_个函数。