2013-05-27 62 views
8

我正在贡献一个R包,它大量使用C代码进行计算。单元测试R包中/ src文件夹中的代码?

我们已经开始使用testthat包编写R功能的测试,将测试放在inst/tests之后的instructions here之后。

Testthat包是否适合直接测试C函数(例如那些没有R接口的函数)?还是我们找到一个单独的C测试包?如果是的话,1)这些测试应该在哪里进行,2)我如何在R CMD check期间让它们运行,以及3)在这方面特别适合的任何C测试包?

回答

3

我觉得这个问题有点糊涂:

  • 要么你认为你的C代码,以支持更高级别的R里面的函数,你可以在R测试(如你似乎已经完成)

  • 或者你认为你的C代码更加独立,在这种情况下,你可以使用一个bazillion单元测试框架之一C.

许多包我们Rcpp还可以使用大量的单元测试,通过RUnit或者通过测试。你可以看看。我通常在R函数级别进行测试,这通常意味着对底层C++函数的测试。

+0

有一组调用C函数的R函数,我可以从R中测试这些函数。但是,也有一些C函数从不会从R中调用,并且我们在重新生成时会产生更多这些函数,但是它确实不是一个独立的库。 –

+0

我推断,基于[Rcpp包描述](http://cran.r-project.org/web/packages/Rcpp/index.html),使用Rcpp可以大大简化将R封装器写入C函数,一个允许将C++函数和类暴露给R级的框架“。也许我继承的方法不是最理想的,但我们传递了许多不同类型参数的列表。 –

+0

如果您阅读了Rcpp(特别是我们所说的_Rcpp attributes_),您将会看到包装C(和C++)函数现在变得微不足道并且完全自动化。 –

相关问题