2014-08-31 121 views
12

我有一堆測試,我不希望它們在CRAN檢查或Travis CI構建過程中運行。它們要麼長時間運行,要麼會導致寫入網絡數據庫的事務/併發衝突。將它們分開的方法(從R CMD檢查測試)與testthat最適合?testthat長時間運行測試模式

我應該把這些測試放在一個單獨的文件夾中嗎?我應該標記它們的文件名並使用正則表達式嗎? (例如,通過Using filter argument in test_package to skip tests @Jeroen)

http://cran.r-project.org/web/packages/policies.html

長時間運行測試和暗角的代碼可以由可選的 檢查,但不保證所留下的檢查做運動的所有 功能包裹。

+1

如果你把它們放在另一個測試目錄中,那麼你仍然可以用'test_dir()'手動測試它們,但是它們不會用'test()'或'R CMD check'運行。例如。 R6有一些手動測試:https://github.com/wch/R6/tree/master/tests – 2014-09-01 02:09:05

+0

我喜歡那個@GaborCsardi,以及測試如何包含在一起,但通過'test()'和'test_dir( )'。 – wibeasley 2014-09-02 02:21:49

+0

@GaborCsardi,這正是我正在尋找的,它[很好](https://github.com/OuhscBbmc/REDCapR/commit/a93bf9e95c259068ba740596679f3943e7b521fa)爲我的包的需要。如果您將您的評論更改爲答案,我想給您的回覆信用。 – wibeasley 2014-09-04 03:13:11

回答

4

如果你把它們放在內tests另一個目錄,那麼你仍然可以手動test_dir()測試他們,但他們不會與test()R CMD check運行。

E.g. R6有一些手動測試:https://github.com/wch/R6/tree/master/tests

7

供參考:testthat 0.9現在帶有一個skip()功能。

但是,我似乎無法弄清楚究竟如何/在哪裏使用它。放入我的test_that()函數,測試仍然運行。如果你把它放在testthat()之前,那麼skip()就會報錯。

+1

感謝您提及 - 前幾天我看到了發佈聲明。立即在測試函數中,我添加了像'testthat :: skip_on_cran()'。 這對我的一些測試非常合適,因爲我想要進行一些手動測試的主要原因是,如果服務器當時不合適,它將不會被CRAN拒絕。我並不在乎Travis-CI或R-Forge檢查是否失敗,因爲它很容易重新運行。 – wibeasley 2014-09-29 03:36:09

+5

你能告訴我,你正在使用'skip()'和/或'skip_on_cran()'嗎?在RStudio中運行'test_package()'或'CRTL + SHFT + T'時,爲了進行特定的測試跳過,我需要放在哪裏? – Rappster 2014-09-29 14:57:01

+2

這裏是[測試代碼]的鏈接(https://github.com/OuhscBbmc/REDCapR/blob/80e9fad0eb8a42375d1291360032c4ee5ec12b97/tests/testthat/test-read_oneshot.R#L10)。爲了運行它,我要麼用'CTRL + SHIFT + E'來檢查包,要麼用''test_results_checked < - devtools :: test()']來運行測試(https://github.com/OuhscBbmc/REDCapR /blob/80e9fad0eb8a42375d1291360032c4ee5ec12b97/utility_scripts/refresh.R#L12)。 – wibeasley 2014-09-29 21:10:11

相關問題