所以我決定將我的幾個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