, поэтому я решил, что поместил бы свои несколько R-функций в пакет, и я читаю/изучаю Writing R Extension.Распространение R-пакета, содержащего модульные тесты
он явно жалуется на то, что я не делаю правильно.
после достаточного поиска в Google, я задаю несколько вопросов здесь, этот вопрос касается стиля тестирования: я использую 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
Я вижу. Затем используйте файл NAMESPACE и не экспортируйте эти теги, если вы не хотите документировать их. Кроме того, вы можете добавить * require (RUnit) * вверху этих функций, чтобы вам не пришлось явно загружать его. – Shane
Я подставляю их под определение проверяемых функций (см. Отредактированный вопрос). Я буду следить за вашей ссылкой и посмотреть, что я могу сделать, спасибо. – mariotomo