brunobrr/bdc

Sobre os testes

Closed this issue · 3 comments

TL;DR: Notas sobre os testes. Nada importante para agora.

Os testes para cada função podem ser criados com a ajuda do pacote usethis. Por exemplo, para criar um teste para a função bdc_suggest_names_taxadb, use:

usethis::use_test('bdc_suggest_names_taxadb")

Automaticamente, a função criará o arquivo tests/testthat/test-bdc_suggest_names_taxadb.R. Se você estiver usando o RStudio, o arquivo será aberto automaticamente. Edite o arquivo (um teste de exemplo já está preenchido no novo arquivo) e rode os testes no console com:

devtools::test()

O interessante dessa abordagem é que podemos colocar o próprio GitHub para rodar esses testes a cada novo push na master ou em outras branchs. Se algo falhar, seremos notificados pelo email. Idealmente, as modificações via pull request só deveriam ser mergeadas se os testes para elas passarem.

O PR #57 adiciona testes para duas funções.

Nota: Não precisamos nos preocupar com isso nesse momento. Isso pode ser feito depois da submissão do trabalho.

workflow para desenvolver os testes e a atualizar a documentação das funções

if (!require("usethis")) install.packages("usethis")
if (!require("remotes")) install.packages("remotes")
if (!require("prefixer")) remotes::install_github("dreamRs/prefixer")
if (!require("rstudioapi")) install.packages("rstudioapi")
if (!require("devtools")) install.packages("devtools")
if (!require("dplyr")) install.packages("dplyr")
if (!require("covr")) install.packages("covr")

############################################################
#                                                          #
#           IMPORTANTE: defina em `FUNC` o nome            #
#           da função (sem parênteses; sem .R).            #
#                # A sequência de todo esse                #
#          workflow será baseada no objeto `FUNC`          #
#                                                          #
############################################################
FUNC <- "bdc_coord_trans"

# cria arquivo de teste para a função
# ver: https://rstudio.com/wp-content/uploads/2015/03/devtools-cheatsheet.pdf
usethis::use_test(FUNC)

# rode os testes
devtools::test_active_file(paste0("tests/testthat/test-", FUNC, ".R"))

# abre o arquivo da função e o painel do prefixer
# atenção: ignore dplyr::id e utils::data
rstudioapi::navigateToFile(paste0("R/", FUNC, ".R")); prefixer::prefixer()

# carrega a função
source(paste0("R/", FUNC, ".R"))

# gera o mmportFrom para ser colado na documentação da função, abaixos dos @params.
# exemplo:
#' @param worldmap_cntr_eode
#'
#' @importFrom dplyr select bind_rows
#' @importFrom sp SpatialPoints over
prefixer::import_from(paste(FUNC))

# renova a documentação da função
# ver: https://r-pkgs.org/man.html
# ou: https://rstudio.com/wp-content/uploads/2015/03/devtools-cheatsheet.pdf
devtools::document()

##%######################################################%##
#                                                          #
####                   Test coverage                    ####
#                                                          #
##%######################################################%##
# https://covr.r-lib.org
# https://github.com/marketplace/actions/codecov
# https://docs.codecov.com/docs/codecov-delta#usage
# devtools::install_github("r-lib/covr")
# usethis::use_coverage()

# If run with no arguments implicitly calls `package_coverage()`
load_all()

covr::file_coverage(
    source_files = paste0("R/", FUNC, ".R"),
    test_files = paste0("tests/testthat/test-", FUNC, ".R")
  ) %>%
  report()

covr::package_coverage()

# For testing your package completely
detach(package:bdc)
covr::package_coverage() %>% 
  report()
  • bdc_clean_duplicates.R (LUCAS)

  • bdc_correct_coordinates.R (GEIZI)

  • bdc_country_from_coordinates.R (GEIZI)

  • bdc_extract_cntr_names.R (GEIZI)

  • bdc_eventDate_empty.R (BRUNO)

  • bdc_create_dir.R (BRUNO)

  • bdc_get_wiki_country.R (LUCAS)

  • bdc_get_world_map.R (LUCAS)

  • bdc_query_names_taxadb.R (BRUNO, GEIZE E LUCAS)

  • bdc_basisOfRrecords_notStandard.R

  • bdc_clean_names.R

  • bdc_coordinates_country_inconsistent.R

  • bdc_coordinates_empty.R

  • bdc_coordinates_from_locality.R

  • bdc_coordinates_outOfRange.R

  • bdc_coordinates_precision.R

  • bdc_coordinates_transposed.R

  • bdc_coord_trans.R

  • bdc_country_standardized.R

  • bdc_create_figures.R

  • bdc_create_report.R

  • bdc_filter_out_flags.R

  • bdc_filter_out_names.R

  • bdc_parse_date.R

  • bdc_quickmap.R

  • bdc_return_names.R

  • bdc_scientificName_empty.R

  • bdc_standardize_country.R

  • bdc_standardize_datasets.R

  • bdc_suggest_names_taxadb.R

  • bdc_summary_col.R

  • bdc_year_from_eventDate.R

  • bdc_year_outOfRange.R

  • globals.R

  • utils-pipe.R

  • utils.R

Pessoal, atualizei o esquema de testes e incluí a sugestão do Santiago para a cobertura de teste. Confiram aqui: #58 (comment)