【问题标题】:Why does devtools::document() try to document tests?为什么 devtools::document() 会尝试记录测试?
【发布时间】:2017-08-21 11:31:24
【问题描述】:

我正在开发一个包 (this one),我在其中根据 testthat workflow 设置我的测试。这包括将我的测试放在./testthat/testthat/ 文件夹和./testthat/testthat.R 文件中,如下所示:

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

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

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

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

【问题讨论】:

    标签: r devtools testthat


    【解决方案1】:

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

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

    还有一个论点load_code 说:

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

    因此,它看起来正在读取所有 .R 文件。但是,我感觉它会跳过所有以 test_ 开头的 .R 文件(否则我会看到我的包也坏了)。我认为问题出在您的 helper_db.R 文件中,您在该文件中使用了 testthat 函数,而该文件不是以 test_ 开头的。

    【讨论】:

    • 嗯,谢谢你把事情弄清楚了。所以我只是没有正确使用document/roxygenize。但是,如果它排除了 test_ 文件,则跳过整个目录可能是有意义的。
    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多