我开始为 R 包实现测试,并且一直在使用 testthat
包。请注意,我是测试新手,所以我的方法可能不对。
我有一个函数目前在第 16 次执行时失败了,在解决这个问题之前,我想编写一个回归测试,如果它再次出现,它将捕获它。
例如,以下总是抛出相同的错误消息:
for i in (1:17) myfun()
myfun
不返回任何东西,它只有打开数据库连接的副作用。我很清楚,我可以编写一个预期错误并在错误返回时通过的测试:
expect_error(for (i in 1:17) myfun())
但我不太明白如何编写测试以确保不会发生错误。由于它并不明显,也许我的方法是错误的。我可以弄清楚如何编写更具体的测试,但我想从这个开始。
我应该编写什么类型的测试来确保不会出现这样的错误?
最佳答案
由于 testthat 的更改而进行的主要编辑
从 0.11 版开始(通过 RStudio blog ),直接支持测试是否缺少错误:
expect_error(myfun(), NA)
捕捉warning
和message
也是一样:
expect_warning(myfun(), NA)
expect_message(myfun(), NA)
旁注:expect_xxx
函数中有一个info
参数用于传递附加信息。所以你可以这样做:
for (i in 1:17) expect_error(myfun(), NA, info = paste("i =", i))
关于r - 如何测试没有发生错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10826365/