簡體   English   中英

R測試單元測試數據和輔助函數約定

[英]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-*.Rtests/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.

github dplyr源代碼中可以看到一個例子。

至於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM