[R] Unit Testing Frameworks: summary and brief discussion

Martin Morgan mtmorgan at fhcrc.org
Wed May 9 19:42:27 CEST 2007

ml-r-help at epigenomics.com writes:

> anthony.rossini at novartis.com wrote:
> [...]
>> ============= From Seth Falcon:
>>   1. At last check, you cannot create classes in unit test code and
>>      this makes it difficult to test some types of functionality.  I'm
>>      really not sure to what extent this is RUnit's fault as opposed
>>      to limitation of the S4 implemenation in R.
> I'd be very interested to hear what problems you experienced. If you 
> have any example ready I'd be happy to take a look at it.
> So far we have not observed (severe) problems to create S4 classes and 
> test them in unit test code. We actually use RUnit mainly on S4 classes 
> and methods. There are even some very simple checks in RUnits own test 
> cases which create and use S4 classes. For example in tests/runitRunit.r
> in the source package.

RUnit has been great for me, helping to develop a more rigorous
programming approach and gaining confidence that my refactoring
doesn't (unintentionally) break the established contract.

One of the strengths of unit tests -- reproducible and expressible in
the way that language sometimes is not:

testCreateClass <- function() {
    setClass("A", contains="numeric")

RUNIT TEST PROTOCOL -- Wed May  9 10:36:53 2007 
Number of test functions: 1 
Number of errors: 1 
Number of failures: 0 

1 Test Suite : 
CreateClass_test - 1 test function, 1 error, 0 failures
ERROR in testCreateClass: Error in assign(mname, def, where) : cannot add bindings to a locked environment

> sessionInfo()
R version 2.6.0 Under development (unstable) (2007-05-07 r41468) 


attached base packages:
[1] "tools"     "stats"     "graphics"  "grDevices" "utils"     "datasets" 
[7] "methods"   "base"     

other attached packages:

Martin Morgan
Bioconductor / Computational Biology

More information about the R-help mailing list