User Tools

Site Tools


development:unit_testing_in_r

This is an old revision of the document!


OHDSI unit testing for R follows the standard R practice using test_that: A folder named 'tests' is created in the root of the package, and this folder contains

  • A sub-folder called 'testthat`
  • A file called 'testthat.R'

The file 'testthat.R' should have the following content:

library(testthat)
library(<package name>)
test_check("<package name>")

The sub-folder 'testthat` should contain one or more R scripts whose file name starts with 'test-' (e.g. 'test-connection.R'. Each file should contain one or more `test_that` blocks, for example

test_that("Function x returns 2", {
  expect_equal(x(), 2)
})

When unit tests are performed

Unit tests are triggered when

  • You manually perform a check of the R package (see the Build tab in R-Studio)
  • When the OHDSI Travis CI Server automatically builds the package after a push to the repository

Your collaborators will appreciate it if you make sure the package passes check before pushing changes to the repository.

Code coverage

We use codecov in combination with the covr package to measure which lines of codes are covered by at least one unit test. Two additions need to be made to .travis.yml to enable code coverage:

  • Add - ./travis-tool.sh install_github jimhester/covr to the install section
  • Add - Rscript -e 'library(covr);codecov()' to the after_success section

Testing functions requiring database access

On the OHDSI Jenkins server there are 6 databases that can be accessed from within a unit test, for the 3 main platforms (SQL Server, Oracle, PostgreSQL), and the two main versions of the Common Data Model (versions 4 and 5). To access the databases locally, you'll need to specify several environmental variables. These environmental variables should also be available on the OHDSI Travis CI Server.

Some example code in the DatabaseConnector package can be found here.

development/unit_testing_in_r.1435635065.txt.gz · Last modified: 2015/06/30 03:31 by schuemie