Некоторые из самых загруженных пакетов 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»