所以我决定将我的几个R函数放到一个包中,我正在阅读/学习Writing R Extension。发送包含单元测试的R包
它显然抱怨我做得不对的事情。我在这里发了几个问题,这个是关于测试风格:我使用RUnit,我喜欢测试尽可能接近正在测试的代码。这样我就不会忘记测试,并将测试作为技术文档的一部分。
例如:
fillInTheBlanks <- function(S) {
## NA in S are replaced with observed values
## accepts a vector possibly holding NA values and returns a vector
## where all observed values are carried forward and the first is
## carried backward. cfr na.locf from zoo library.
L <- !is.na(S)
c(S[L][1], S[L])[1 + cumsum(L)]
}
test.fillInTheBlanks <- function() {
checkEquals(fillInTheBlanks(c(1, NA, NA, 2, 3, NA, 4)), c(1, 1, 1, 2, 3, 3, 4))
checkEquals(fillInTheBlanks(c(1, 2, 3, 4)), c(1, 2, 3, 4))
checkEquals(fillInTheBlanks(c(NA, NA, 2, 3, NA, 4)), c(2, 2, 2, 3, 3, 4))
}
但R CMD check
问题音符线,像这样的:
test.fillInTheBlanks: no visible global function definition for
‘checkEquals’
,并抱怨我没有记录的测试功能。
我真的不想为测试函数添加文档,我绝对不想为RUnit软件包添加依赖项。
你觉得我应该看看这个问题?
我把它们放在要测试的函数的定义下。将编辑问题以使自己清楚。 – mariotomo 2009-12-10 12:51:42
我明白了。然后使用NAMESPACE文件,如果您不想记录它们,则不要导出这些测试。除此之外,您可能需要在这些函数的顶部添加* require(RUnit)*,以便您不必显式加载它。 – Shane 2009-12-10 12:55:44
我把它们放在要测试函数的定义下(见编辑问题)。我会跟随你的链接,看看我能做些什么,谢谢。 – mariotomo 2009-12-10 12:56:18