R is a statistics programming language. Part of R is the use of Packages, which themselves are written in the R language. Programming best practice includes the use of unit-testing to test the functions within these packages while they are being written and when they are used.
I am aware of a few packages for unit testing within R, these being
I'm interested to know;
Are there any other packages out there ? Given peoples experience, do these packages excel at different things ? What's the current state of the art in unit testing for R ?
The unit test basically is small functions that test and help to write robust code. From a robust code we mean a code which will not break easily upon changes, can be refactored simply, can be extended without breaking the rest, and can be tested with ease.
Unit tests are also especially useful when it comes to refactoring or re-writing a piece a code. If you have good unit tests coverage, you can refactor with confidence. Without unit tests, it is often hard to ensure the you didn't break anything.
Unit testing uses all white box testing techniques as it uses the code of software application: Data flow Testing. Control Flow Testing. Branch Coverage Testing.
Unit testing seems to be more or less a solved problem, so all three packages will likely be adequate for your needs. There are subtle differences between them though:
RUnit
is based on xunit, and as such is easy to understand if you've used any versions of it from other languages.
svUnit
uses the same tests as RUnit, but includes a GUI to help with interactive use.
testthat
isn't compatible with either, but includes much the same features and can check to only execute tests on files that haven't changed, which is useful for testing large projects.
Several years later...
RUnit
and svUnit
still don't have checks for messages and warnings, nor test caching, and don't seem to be under much development, so testthat
should be your first choice for new projects. You can convert RUnit
tests to testthat
tests using my runittotestthat
package.
here is a few things I've found from Google.
This topic was discussed on the mailing list here which mentioned the packages above. It seems RUnit and svunit will execute the same test code, but Runit also has tracking and code coverage functions.
A comparison of the two is also on the R wiki at http://rwiki.sciviews.org/doku.php?id=developers:runit
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With