如何在R的testthat中定义仅用于测试的专属函数?
解决R包测试中共享专属测试函数的问题
要让测试专用函数能被所有测试文件访问,直接按以下步骤操作即可:
- 在
tests/testthat目录下创建以helper-开头的R文件,比如helper-test-db.R。testthat会自动在运行所有测试前加载这类文件,文件内的函数会被所有测试脚本共享。 - 把你的
is_test_db函数移到这个helper文件里,示例代码如下:
is_test_db <- function() { x <- try({ con <- db_connect() on.exit(db_disconnect(con), add = TRUE) }) # 简化返回逻辑 !inherits(x, "try-error") }
- 把
tests/testthat.R里的函数定义删掉,只保留核心的测试启动代码:
library(testthat) library(mypackage) test_check("mypackage")
之后,你在任何tests/testthat下的测试文件(比如test-*.R)里,都可以直接调用is_test_db()。比如在测试里跳过无法连接数据库的用例:
test_that("数据库操作功能正常", { skip_if_not(is_test_db(), "测试数据库无法连接,跳过该测试") # 编写具体的测试逻辑 })
内容的提问来源于stack exchange,提问作者Bangyou
相关产品推荐
相关产品推荐

