如何使用 testthat 测试已安装的包?

How to test an installed package with testthat?

我想测试一个已安装的包,但是这个 returns 是一个错误。

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

test_package (source here) returns 这个错误是因为 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"  

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

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

所以没办法,只能修改源码包,重新安装。但到那时,您还不如 运行 对源码包进行测试。

您可以使用

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

但我认为只有在 inst/ 中进行测试才有效

还有

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

同时安装测试包。但如果测试在 inst/

中也可以

所以你最好下载源码包然后运行:

devtools::test()