有没有办法递归地进行 testthat 搜索?

Is there a way to make testthat search recursively?

当我的 R 包目录结构在测试文件夹中直接包含 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)