【问题标题】:How to test an installed package with testthat?如何使用 testthat 测试已安装的软件包?
【发布时间】:2016-08-03 04:06:03
【问题描述】:

我想测试已安装的软件包,但这会返回错误。

library(testthat)
test_package("testthat")
# Error: No tests found for testthat

test_package (source here) 返回此错误,因为 system.file("tests", package = package) 为空。实际上,安装的包中缺少tests 目录。

list.dirs(system.file("", package = "testthat"))
# [1] "/home/paul/R/x86_64-pc-linux-gnu-library/3.2/testthat/"     
# [2] "/home/paul/R/x86_64-pc-linux-gnu-library/3.2/testthat//help"
# [3] "/home/paul/R/x86_64-pc-linux-gnu-library/3.2/testthat//html"
# [4] "/home/paul/R/x86_64-pc-linux-gnu-library/3.2/testthat//libs"
# [5] "/home/paul/R/x86_64-pc-linux-gnu-library/3.2/testthat//Meta"
# [6] "/home/paul/R/x86_64-pc-linux-gnu-library/3.2/testthat//R"  

如何安装包以使其测试目录保持存在?

【问题讨论】:

标签: r testthat


【解决方案1】:

如果作者选择不将测试放在inst/目录下,那么它们将不会随包一起安装,您也无法通过已安装的包运行测试。

因此,除了修改源包并重新安装之外,您无能为力。但是到那时,您还不如只在源包上运行测试。

【讨论】:

  • 我看到inst/teststhis other answer 中被提及。所以看起来如果我想用我的源包传播测试,我必须把它们放在 inst/ 目录中。为什么 Hadley 没有在 his package testing chapter 中提到这一点?
  • @PaulRougieux:我不知道他为什么不提;你可以问他。
  • 我最初的打算是与我的源包共享测试。我只是将tests 移动到inst/tests,重建了包,现在testthat::test_package() 可以工作了。
  • @stats0007 的答案提到了这个已接受的答案中缺少的一个重要选项:install.packages("testthat", INSTALL_opts = "--install-tests")
【解决方案2】:

你可以用

测试包
tools::testInstalledPackage("package")

但我认为它只有在测试在 inst/ 时才有效

还有

install.packages("testthat", INSTALL_opts = "--install-tests")

还可以使用包安装测试。但如果测试在 inst/ 中也可以工作

所以最好下载源包并运行:

devtools::test()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 2013-12-15
    • 1970-01-01
    相关资源
    最近更新 更多