Salvare le aspettative come unit test ed eseguirle

Sviluppare pacchetti R

Jasmin Ludolf

Content Developer

Workflow

  1. Crea esempi per mostrare come funziona la funzione
  2. Scrivi aspettative per verificarne il comportamento
  3. Raggruppa aspettative sullo stesso aspetto in un unit test
  4. Esegui tutti gli unit test in un file
  5. Esegui tutti gli unit test nel pacchetto

testing.png

Sviluppare pacchetti R

Raggruppare aspettative simili

expect_equal(temp_converter(32, "Fahrenheit", "Celsius"), 0)
expect_warning(temp_converter(-40, "Celsius", "Celsius"))
expect_error(temp_converter(300, "Kelvin", "Fahrenheit"))
library(testthat)

test_that("La conversione da F a C e da C a F funziona", {
expect_equal(temp_converter(32, "Fahrenheit", "Celsius"), 0) expect_warning(temp_converter(-40, "Celsius", "Celsius")) expect_error(temp_converter(300, "Kelvin", "Fahrenheit")) })

output di test_example

Sviluppare pacchetti R

E se i test falliscono?

library(testthat)
test_that("La conversione da F a C e da C a F funziona", {
      expect_equal(temp_converter(32,  "Fahrenheit", "Celsius")), 1)
      expect_warning(temp_converter(-40), "Celsius", "Fahrenheit")
      expect_error(temp_converter(25)) 
})
X La conversione da F a C e da C a F funziona
-- 1. Errore: `temp_converter(32,  "Fahrenheit", "Celsius")` non è uguale a 1 
(@test_conversion.R:2) 
--
-- 2. Errore: `temp_converter(-40)` non ha generato l'avviso previsto. 
(@test_conversion.R:3) 
--
temp_converter(25) non ha generato un errore.
Sviluppare pacchetti R

Eseguire tutti i test in un file

  • Per eseguire tutti i test in un file, usa test_file()
library(testthat)
test_file("test-temp_conversion.R")
La conversione da F a C e da C a F funziona
Sviluppare pacchetti R

Eseguire i test sugli esempi

#' @examples
#' # Convert 25 degrees Celsius to Fahrenheit 
#' temp_converter(25, unit_from = "Celsius", unit_to = "Fahrenheit")
#' # Convert 100 degrees Fahrenheit to Celsius 
#' temp_converter(100, unit_from = "Fahrenheit", unit_to = "Celsius")
  • roxygenize() genera un file di help per temp_converter nella cartella man
test_example("man/temp_converter.Rd")

output di test_example

Sviluppare pacchetti R

Eseguili tutti!

  • Usa test_file() se vuoi concentrarti su un file specifico
  • Non serve eseguire test_file() su ogni file ogni volta
  • In alternativa, esegui test_package() per lanciarli tutti!
test_package("unitConverter")
Sviluppare pacchetti R

Vamos praticar!

Sviluppare pacchetti R

Preparing Video For Download...