为CRAN包创建简短示例

时间:2015-02-26 06:31:01

标签: r package devtools cran roxygen2

我目前正在构建一个我希望上传到CRAN的软件包。我在帮助文档中包含的示例目前需要一些时间来检查(总共约12分钟),并且我知道在尝试加载CRAN时这可能是一个问题。虽然我可以让我的示例运行得更快,但我担心这会使用户对阅读帮助文件的意义降低。有没有办法包含一些快速(但不太有意义)的示例,这些示例将由CRAN检查但在帮助文档中对用户不可见?

我正在使用devtools和roxygen2来编写我的文档,所以如果可能的话,使用这些工具获得答案会很棒。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

听起来你想做一些单元测试,这在使用更复杂的软件包时是一个非常好的主意。查看testthat包(articlesource)。

确保正确操作包但与最终用户无关的简短纯技术示例将进入单独的文件夹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不会被复制到最终包中。

答案 1 :(得分:1)

请参阅manual,第2.1.1节,example小节。您可以将更重的示例附加到\dontrun,但不会检查它们。

答案 2 :(得分:0)

如果唯一的问题是CRAN加载,则应使用\donttest{}命令阻止在CRAN上运行示例。请注意,当用户键入example(xx)

时,示例仍会运行