【问题标题】:Creating short examples for CRAN package为 CRAN 包创建简短示例
【发布时间】:2015-02-26 06:31:01
【问题描述】:

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

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

感谢您的帮助。

【问题讨论】:

  • 如果您的示例需要很长时间才能运行,您可能希望尽可能简化它们,并分析 R 代码以提高效率。

标签: r package devtools cran roxygen2


【解决方案1】:

听起来您想做一些单元测试,这在处理更复杂的包时是一个非常好的主意。查看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 不会复制到最终包中。

【讨论】:

  • 测试应该进入tests/testthat。旧的inst/tests 将在未来的版本中被弃用。
  • 谢谢,我不知道,但已经相应地更新了答案。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • \donttest 不再有用,因为该代码现在已经过测试:/
    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多