2013-05-27 59 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++)函數現在變得微不足道並且完全自動化。 –

相關問題