我目前正在构建一个包,希望上传到CRAN。我在帮助文档中包含的示例目前需要一些时间来检查(总共约12分钟),我知道在尝试加载CRAN时可能会出现问题。虽然我可以让我的示例运行得更快,但我担心这会降低它们对阅读帮助文件的用户的意义。有没有办法在帮助文档中包含一些CRAN会检查但用户看不到的快速(但意义不大)示例?
我正在使用devtools和roxygen2来编写我的文档,所以如果可能的话,使用这些工具得到答案会很好。
谢谢你的帮助。
听起来你想做一些单元测试,这在处理更复杂的包时是一个非常好的主意。查看testthat
包(文章,来源)。
确保软件包正确运行所需的简短且纯粹的技术示例(但与最终用户不太相关)将进入单独的文件夹myPackage/tests
。这些将在每次构建包时自动运行,但不会包含在文档文件中。
建议的解决方案是制作一个名为myPackage/tests/run-all.R
:的文件
library(testthat)
library(myPackage)
test_package("myPackage")
然后将所有测试代码放入myPackage/tests/testthat
中,例如myPackage/tests/testthat/foo.R
:
context("Basic operation")
test_that("Default execution", {
a <- 4
b <- 34
expect_equal(myFunction(a, b), a + b)
})
将测试放入myPackage/tests/testthat
而不是直接放入myPackage/tests
的原因是myPackage/tests/testthat
将包含在最终包中(尽管在不同的文件夹中),这允许用户也运行测试。myPackage/tests
不会复制到最终包中。
请参阅手册第2.1.1节example
小节。您可以将更重的示例包含在dontrun
中,它们将不会被检查。
如果唯一的问题是CRAN加载,则应该使用donttest{}
命令来阻止在CRAN上运行示例。请注意,当用户键入example(xx)