[英]How to write a testthat unit test for a function that returns a data frame
[英]R testthat unit test data and helper function conventions
我正在寫一個R包,我正在使用testthat進行單元測試。 我的許多單元測試用於測試特定於我的包的特定對象的函數。 對於這些測試,我已經創建了一個幫助函數來設置模擬對象。 我還有一些其他輔助函數來減少單元測試中的代碼量。
目前這些輔助函數位於我的R/
文件夾中,因為它們可用於我的單元測試文件(在tests/testthat/
)。 我發現放置僅用於R/
文件夾中的單元測試的函數有點奇怪。 如果可以將它們放在tests/
文件夾中的某個位置會很好。 但似乎這樣做會使單元測試期間無法使用它們。 請注意,這些輔助函數用於幾個不同的測試文件,因此只需將輔助函數放在包含單元測試的一個文件的頂部就不是解決方案。
另一個相關問題是放置用於單元測試的數據文件的位置。 例如,我的一些函數使用limma
包中的ExpressionSet
對象(在Bioconductor上可用),我在使用load()
函數進行單元測試期間將其加載到R中。 目前我將它們放在inst/extdata
文件夾中,因為我可以在單元測試期間使用system.file()
它們。 此文件夾還包含其他數據文件,這些文件適用於程序包的用戶。 我覺得把我的測試數據放在與最終用戶相同的位置,這與最終用戶無關。
所以我的問題是,是否可以將單元測試助手函數和測試數據全部放在tests/
目錄中。 如果是這樣,我如何從單元測試中訪問這些文件? 單元測試助手和單元測試數據的最佳實踐/約定是什么?
我理解在tests/testthat/
運行任何測試之前, tests/testthat/
以helper
開頭的文件來源。 因此,你可以在tests/testthat/
適當名為helper-*.R
的tests/testthat/
放置輔助函數。
來自testthat
source_file
R help( ?testthat::source_file
)
The expectation is that the files can be sourced in alphabetical
order. Helper scripts are R scripts accompanying test scripts but
prefixed by ‘helper’. These scripts are once before the tests are
run.
至於testdata。 我遵循這個問題的一條評論的建議: 在哪里用testthat將數據用於自動化測試? 並使用inst/testdata
,然后使用system.file("testdata",...,package="my_package")
訪問文件system.file("testdata",...,package="my_package")
也許它會對你有所幫助: https : //github.com/gmum/gmum.r/tree/master/tests/testthat
在文件組合中有一個稱為組合的輔助函數.R然后它使用source('combinations.R')
包含在test_cec_centroid_assignment.R中我不確定這是一個很好的約定但是它有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.