unitizer
simplifies creating, reviewing, and debugging unit tests in R. To install:
install.packages('unitizer')
Please keep in mind this is an experimental framework that has been thoroughly tested by one person.
unitizer
bakes in a lot of contextual help so you can get started without reading all the documentation. Try the demo to get an idea:
library(unitizer)
demo(unitizer)
Or check out the screencast to see unitizer
in action.
Are you tired of the deparse
/dput
then copy-paste R objects into test file dance, or do you use testthat::expect_equal_to_reference
a lot?
With unitizer
you review function output at an interactive prompt as you would with informal tests. You then store the value, conditions (e.g. warnings, etc.), and environment for use as the reference values in formal tests, all with a single keystroke.
Do you wish the nature of a test failure was more immediately obvious?
When tests fail, you are shown a proper diff so you can clearly identify how the test failed:
Do you wish that you could start debugging your failed tests without additional set-up work?
unitizer
drops you in the test environment so you can debug why the test failed without further ado:
Do you avoid improvements to your functions because that would require painstakingly updating many tests?
The diffs for the failed tests let you immediately confirm only what you intended changed. Then you can update each test with a single keystroke.
unitizer
stores R expressions and the result of evaluating them so that it can detect code regressions. This is akin to saving test output to a .Rout.save
file as documented in Writing R Extensions, except that we’re storing the actual R objects and it is much easier to review them.
To use unitizer
:
unitize("my_file_name.R")
and follow the promptsunitize("my_file_name.R")
; if any tests fail you will be able to review and debug them in an interactive promptunitizer
can run in a non-interactive mode for use with R CMD check
.
help(package="unitizer")
, in particular ?unitize
demo(package="unitizer")
browseVignettes("unitizer")
for a list of vignettes, or skip straight to the Introduction vignetteThank you to:
Brodie Gaslam is a hobbyist programmer based in the US East Coast.