Я начал выполнять модульные тесты для своих функций в R, используя svUnit (docs). Я выполнил тест для функций в файле, а затем для файлов в другом файле, и я создал mainTest, где я вызываю все тесты. Так что мой проект выглядит следующим образом:Как сделать блоки модульных испытаний в R?
proj
|-src
| |-functions1 (containing some functions)
| |-functions2 (containing some other functions)
| |-functions3 (containing some more functions)
| |-mainFile (here I call the functions in the files above)
|-tests
|-functions1Test (containing tests for functions in functions1 file)
|-functions2Test (containing tests for functions in functions2 file)
|-functions3Test (containing tests for functions in functions3 file)
|-mainTest (containing the function that runs all the tests)
functionsXTest файл выглядит следующим образом:
source('functionsX.R')
test(fun1) <- function(){
# call the fun1 function and check the result
}
test(fun2) <- function(){
# call the fun2 function and check the result
}
# ...
functions1Tests <- svSuite(svSuiteList()) # here
В mainTests выглядит следующим образом:
library('svUnit')
source('functions1Tests.R')
source('functions1Tests.R')
source('functions1Tests.R')
launchTests <- function(){
clearLog()
runTest(functions1Tests)
runTest(functions2Tests)
runTest(functions3Tests)
Log()
}
Я думал, что последняя строка в конце файловых функцийXTest.R группирует модульные тесты в переменной, но кажется, что он группирует все тесты в этой переменной, поэтому функции1Tests содержит тесты для всех функций в функциях1.R , а функции2Tests содержит тесты в функциях1.R и functions2.R. Есть ли возможность иметь все тесты в файле, сгруппированном по переменной, и запускать тесты для каждой переменной, так что будет легче найти проблемный тест?
Я предлагаю 'testthat' от Hadley Уикхемом. Я думаю, это даст вам все варианты, которые вам нужны. Такие как контекст и сообщения, которые из вашего теста не удались. [testthat] (http://r-pkgs.had.co.nz/tests.html) – drmariod
Nice testthat, но мой svUnit отображает достаточно информации, но я хотел сгруппировать тест, поэтому сначала проверьте первый блок, затем второй и т. д. Сейчас все они смешаны, и я уверен, что что-то упустил. Если я не могу найти его, возможно, я предложу testthat для модульных тестов для моего начальника ... – sop