Некоторые из самых загруженных пакетов R построены на TRAVIS CI. В этой поваренной книге вы увидите, насколько легко это просто настроить TRUVIS CI в существующем проекте R.
Давайте предположим, что у вас есть файл под названием Основные_операции. R
, и это читает что-то вроде этого:
add <- function(a, b){ result <- a + b return(result) } subtract <- function(a, b){ result <- a - b return(result) } divide <- function(numerator, denominator){ if(denominator == 0){ stop("Nah") } else { result <- numerator / denominator return(result) } }
Реализация Трэвиса СИ
Теперь вы хотите получить автоматическое тестирование. К счастью, есть Трэвис СИ! Давайте начнем с .travis.yml
файл:
language: R cache: packages warnings_are_errors: false
Агрегатные тесты
Для модульных тестов мы хотим использовать что-то называемое testthat
Отказ Скажем, мы назвали весь весь проект Sampler
Отказ Ваш начальный testthat. R
Файл будет выглядеть похоже на это:
library(testthat) library(sampleR) test_check("sampleR")
В вашем Тесты
каталог, вы заметите /Тесты/testthat
И давайте скажем, у вас есть файл в туда-под названием Test-Basic_oPerations. R
И все происходит следующим образом:
test_that("addition works", { a <- runif(1) b <- runif(1) expect_equal(a + b, add(a, b)) a <- -1 * runif(1) b <- runif(1) expect_equal(a + b, add(a, b)) }) test_that("subtraction works", { a <- runif(1) b <- runif(1) expect_equal(a - b, subtract(a, b)) a <- -1 * runif(1) b <- runif(1) expect_equal(a - b, subtract(a, b)) }) test_that("division errors if zero", { expect_error(divide(1, 0), "Nah") }) test_that("division works", { a <- runif(1) b <- runif(1) expect_equal(a / b, divide(a, b)) a <- -1 * runif(1) b <- runif(1) expect_equal(a / b, divide(a, b)) })
Вы можете увидеть в этом тесте подразделения, мы тестируем, если разделение
, Дополнение
и вычитание
проходит тест подразделения.
Заканчивать
На данный момент вы все набор и готов к вашему R
проект построить. Последнее, но не менее важное, есть альтернативные способы получить пакеты при построении вашего .travis.yml.yml.yml
. Например, если я хотел получить пакеты из GitHub, это будет выглядеть что-то подобное:
r_github_packages: r-lib/testthat
Другая альтернатива — использовать Кран
. Вот как это будет выглядеть схватить вашу посылку от Кран
:
r_packages: - testthat
Небольшие варианты, но просто разные методы получения того же пакета. Это просто сводится к вашему собственному подходу и методу.
Оригинал: «https://dev.to/travisci/the-cookbook-getting-started-with-r-2hen»