【发布时间】:2017-05-01 03:31:54
【问题描述】:
我对一个包进行了测试,用于检查可能返回或不返回警告的函数,例如:
test_that("test", {
expect_true(is.na(log(NA)))
expect_true(is.na(log(-1)))
})
我不有兴趣查看出现警告的天气。有没有办法告诉testthat 在运行devtools::test() 时忽略警告而不显示它们?
我知道我可以将每个函数打包到 expect_warning 或 suppressWarnings 中,但我想做类似的事情
test_that("test", {
ignoreAllTheWarningsInside({
expect_true(is.na(log(NA)))
expect_true(is.na(log(-1)))
})
})
不幸的是,options(warn = -1) 似乎也不适用于此。
【问题讨论】:
-
我使用了以下解决方法:
expect_warning(a <- is.na(log(NA)))和expect_true(a); ... -
@Christoph 我通常使用
expect_warning(expect_true(is.na(log(-1)))),但问题如上:对于某些功能会有警告,而对于某些不会,所以我不期待警告对于每个案例。此外,我不想将每个函数都打包在suppressWarnings()中,因为它需要大量的复制和粘贴。 -
如果我希望能够对
a进行多次测试,我会使用a <- ...(就像解释一样)。但我同意,处理警告有时很奇怪。你用RSudio吗?RStudio会不会有问题?老实说,我从来没有检查过...... -
options(warn = -1)为我工作。 -
你确定使用
suppressWarnings({expect_true(is.na(log(NA))); expect_true(is.na(log(-1)))})这样的 suppressWarnings 不起作用吗?