[Rcpp-devel] How to manage testing code for Rcpp based project?

Davor Cubranic cubranic at stat.ubc.ca
Wed Aug 22 07:16:56 CEST 2012


On 12-08-21 09:54 PM, Darren Cook wrote:
>>> RUnit works, but the setup is not the easiest. If someone has ideas for
>>> better solutions, by all means implement those.  Unit testing has helped us
>>> many times, and I consider it to be a very important part of package
>>> development.
>>
>> How (or in what aspect) RUnit is better than devtools?
>
> What is "devtools"? Is it a package for testing R software? (it sounds
> more generic)

See http://cran.r-project.org/web/packages/devtools/ and 
https://github.com/hadley/devtools

It aims to make various phases of package development cycle easier, at 
the expense of requiring following certain conventions about naming and 
layout of source files and directories.

I think what Peng meant as an alternative to Runit is not the devtools 
itself, but testthat. See 
http://cran.r-project.org/web/packages/testthat/ and 
https://github.com/hadley/test_that

Philosophically, testthat draws on Ruby test frameworks like rspec and 
other BDD tools. In practical terms, it means that the tests look like this:

context("Basic tests")

test_that("logical tests act as expected", {
   expect_that(TRUE, is_true())
   expect_that(FALSE, is_false())
})

test_that("equality holds", {
   expect_that(5, equals(5))
   expect_that(10, is_identical_to(10))
})

I haven't gotten very deep into using it, but in practical terms I find 
there is almost 1:1 correspondence in testing functions ("checkEquals" 
-> "expect_that(..., equals(...))", with testthat being a little more 
readable but requiring me to turn off ESS's smart-underscore. :-)

Davor


More information about the Rcpp-devel mailing list