我有一个测试套件,用于检查可能会或可能不会返回警告的函数,例如:
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); ...
- Christophexpect_warning(expect_true(is.na(log(-1))))
,但问题如上所述:对于某些函数,会有警告,而对于某些函数,则不会有警告,因此我并不希望针对每种情况都预期警告。此外,我不想在每个函数中打包suppressWarnings()
,因为这需要大量复制和粘贴。 - Timoptions(warn = -1)
对我很有效。 - Pavel ObraztcovsuppressWarnings({expect_true(is.na(log(NA))); expect_true(is.na(log(-1)))})
的 suppressWarnings 不起作用吗? - Karl Forner