有没有办法递归地进行测试?

时间:2018-02-26 14:58:49

标签: r testthat

当我的R包目录结构直接在tests文件夹中有R文件时

.
+--Projroot
+---- R
|     -- routine1.R
|     -- routine2.R
+---- tests
      -- test_routine1.R
      -- test_routine2.R

testthat捕获test_*.R个文件,但是当测试本身依赖于大量文件时,拥有测试子目录会更加清晰

.
+--Projroot
+---- R
|     -- routine1.R
|     -- routine2.R
+---- tests
      |
      +---- test_routine1
      |     -- test_routine1.R
      |     -- help_file11
      |     -- help_file12
      +---- test_routine2
            -- test_routine2.R
            -- help_file21
            -- help_file22

仅运行devtools::test()不会捕获内部目录中的test_*.R文件。

有没有办法以递归方式进行testthat搜索?

1 个答案:

答案 0 :(得分:5)

devtools::test()来电testthat::test_dir

testthat::test_dir找到要使用testthat:::find_test_scripts测试的文件。并且此函数在文件夹内不会递归显示,因此本身没有,testthat无法在内部目录中进行测试。

您仍然可以通过这种方式运行测试:

my_test <- list.files(path = "tests", pattern = "test_|help_", recursive = TRUE, full.names = TRUE)
lapply(my_test, test_file)