[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