【发布时间】:2015-12-10 08:04:57
【问题描述】:
我正在使用 RStudio 开发一个自定义 R 包,使用 roxygen2 记录。
请考虑这个函数:
#' Get "test"
#'
#' @return String
#' @export
#'
#' @examples getTest()
getTest <- function() {
return("test")
}
如果我用上面写的函数文档运行R CMD check,一切都很好,check 成功传递。
现在,如果我删除 @export(因为我不希望从包外部看到此功能),我会收到以下错误:
* checking examples ... ERROR
Running examples in 'MyPackageName-Ex.R' failed
The error most likely occurred in:
> ### Name: getTest
> ### Title: Get "test"
> ### Aliases: getTest
>
> ### ** Examples
>
> getTest()
Error: could not find function "getTest"
Execution halted
看起来@examples 中的函数测试是从包外运行的!?
如何测试非导出函数的例子?
【问题讨论】:
-
示例是文档的一部分。文档仅适用于导出的函数。如果您的目标是单元测试,请使用实现该功能的包之一,例如,如果您想留在 hadleyverse 中,请打包 testthat。
-
您说:“文档仅用于导出的函数”。它是 R 哲学吗?还是 Roxygen2 哲学?因为我也想记录这些未导出的函数,至少对我或我的包的共同开发者来说是这样。并添加一些示例以更好地理解!一种解决方案是使用 testthat 进行单元测试,并将示例添加到
dontrun{}块中。不过,这并不是那么令人满意.. -
您应该重新阅读“编写 R 扩展”。我只是使用 cmets 为自己记录未导出的函数。
-
@Ronald 哪个部分?
标签: r