pic*_*ick 6 r devtools package testthat
使用testthat/devtools基础结构时,跳过R包测试目录中所有测试的正确方法是什么?例如,如果没有与数据库的连接并且所有测试都依赖于该连接,我是否需要skip
单独编写所有文件或者我可以在skip
某处写一个?
我有一个标准的包装设置,看起来像
mypackage的/
- ......#其他包裹的东西
- 测试/
- testthat.R
- testthat /
- 测试thing1.R
- 测试thing2.R
起初我以为我可以在testthat.R
文件中进行测试
## in testthat.R
library(testthat)
library(mypackage)
fail_test <- function() FALSE
if (fail_test()) test_check("package")
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,看起来调用devtools::test()
只是忽略该文件.我想另一种方法是将所有测试存储在另一个目录中,但是有更好的解决方案吗?
R Packages 书中的跳过测试部分涵盖了这个用例。本质上,您编写一个自定义函数来检查您需要检查的任何条件——是否可以连接到您的数据库——然后从需要满足该条件的所有测试中调用该函数。
例子,从书中模仿:
skip_if_no_db <- function() {
if (db_conn()) {
skip("API not available")
}
}
test_that("foo api returns bar when given baz", {
skip_if_no_db()
...
})
Run Code Online (Sandbox Code Playgroud)
我发现这种方法比关闭所有测试的单个开关更有用,因为我倾向于混合测试,这些测试不依赖于我正在检查的任何条件,并且我希望始终运行尽可能多的测试可能的。
小智 1
也许您可以在子目录中组织测试,将条件目录包含放在父文件夹测试中:
考虑testthat包中的“测试” 。特别是,这个看起来很有趣:
我在这里没有看到任何在测试扫描中递归子目录的内容:
归档时间: |
|
查看次数: |
706 次 |
最近记录: |