当我的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递归搜索?

最佳答案

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)

07-25 22:10