unitizer
simplifies creation, review, and debugging of tests in R. It
automatically stores R expressions and the values they produce, so
explicit expectations are unnecessary. Every test is easy to write with
unitizer
because testing and using a function are the same. This
encourages non-trivial tests that better represent actual usage.
Tests fail when the value associated with an expression changes. In interactive mode you are dropped directly into the failing test environment so you may debug it.
unitizer
is on CRAN:
install.packages('unitizer')
It 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
or
other snapshot testing a lot?
With unitizer
you interactively review your code as you would when
typing it at the R prompt. Then, with a single keystroke, you tell
unitizer
to store the code, and any values, warnings, or errors it
produced, thereby creating a formal regression test.
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 prompts.unitize("my_file_name.R")
; if any tests fail you will be
able to review and debug them in an interactive prompt.unitizer
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
vignetteaammrtf
, a minimal version
of unitizer
, used by unitizer
for its own tests.testthat
.tinytest
, which is
extended by ttdo
for
diffobj
diffs.RUnit
.Thank you to:
Brodie Gaslam is a hobbyist programmer based in the US East Coast.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.