2017-08-21 32 views
1

我正在开发一个包(this one),其中我根据testthat workflow设置了测试。这包括如下我在./testthat/testthat/文件夹中的测试和./testthat/testthat.R文件:为什么devtools :: document()尝试记录测试?

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

所有的测试要求的testthat包附后(因此我没有使用testthat::function参考

刚刚重新启动后R(不附带testthat)我尝试运行devtools::document()但它打破,因为它没有找到testthat功能,我在测试中使用。当然,通过附加testthatdevtools::document()运行之后。

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

回答

0

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

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

而且也有它说的参数load_code

用于装载所有的R代码包目录的功能。它是通过包的路径调用的,它应该返回包含所有源代码的环境。

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

+0

恩,谢谢,清除了事情。所以我只是没有正确使用'document/roxygenize'。但是,如果它排除'test_'文件,则可能会跳过整个目录。 –