Given a simple function youâd like to test in the file myfunction.R
:
biggest <- function(x,y) { max(c(x,y)) }
A test script for this function test_myfunction.R
would be:
library(unittest)
source('myfunction.R') # Or library(mypackage) if part of a package
ok(biggest(3,4) == 4, "two numbers")
ok(biggest(c(5,3),c(3,4)) == 5, "two vectors")
You can then run this test in several ways:
source('test_myfunction.R')
from RRscript --vanilla test_myfunction.R
from the command promptR CMD check
, if test_myfunction.R
is inside the tests
directory of mypackage
being tested. unittest
doesnât require any further setup in your package.If writing tests as part of a package, see the âAdding Tests to Packagesâ vignette for more information.
The workhorse of the unittest
package is the ok
function which prints âokâ when the expression provided evaluates to TRUE
and ânot okâ if the expression evaluates to anything else or results in an error. There are several ut_cmp_*
helpers designed to work with ok
:
ok(ut_cmp_equal( biggest(1/3, 2/6), 2/6), "two floating point numbers")
: Uses all.equal to compare within a tolerance.ok(ut_cmp_identical( biggest("c", "d") ), "two strings")
: Uses identical to make sure outputs are identical.ok(ut_cmp_error(biggest(3), '"y".*missing'), "single argument is an error")
: Make sure the code produces an error matching the regular expression.In all cases you get detailed, colourised output on what the difference is, for example:
Output ofok(ut_cmp_identical(list(1,3,3,4), list(1,2,3,4)))
The package was inspired by Perlâs Test::Simple.
If you want more features there are other unit testing packages out there; see testthat, RUnit, svUnit.
Installing from CRANIn an R session type
install.packages('unittest')
Or add Suggests: unittest
to your packageâs DESCRIPTION
file.
To install the latest development version, use remotes:
# install.packages("remotes")
remotes::install_github("ravingmantis/unittest")
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4