Куда поместить тестовые данные в пакете R для R CMD CHECK - PullRequest
0 голосов
/ 28 мая 2020

Этот вопрос практически повторяет Q32328802 - testdata for testthat . Разница в том, что я ищу более конкретный ответ c, относящийся к devtools::check. В частности, как мне получить devtools::check() для распознавания и загрузки моих тестовых данных?

Структура моего пакета для tests/testthat.R и tests/testthat/setup-testdata.R описана ниже (а ссылка на github находится в внизу поста). Я пробовал следующее:

  • Следуя связанному выше вопросу, я поместил тестовые данные в inst/testdata. Поскольку это не работает, я также пробовал другие места (например, tests/, tests/testthat). Ни одно из этих мест не работает.
  • Я также пробовал переименовать helper-testdata.R как setup-testdata.R и получил те же неудачные результаты.
  • devtools::check(), похоже, не точно распознает load(system.file(...)) команда. Он также не распознает, если я пишу имя файла (ie. Не используйте system.file()). Отсутствие команды загрузки также не работает.

tests/:

testthat.R

library(synthACS)
library(testthat)

test_check("synthACS")

testthat/setup-testdata.R содержит одну строку:

load(system.file("testdata", 'dat-acsdata.Rda', package= "synthACS"))
# run interactively, this line of code loads the data accurately.
# within devtools::check() it appears to return an empty string ("") for
# file location

Проверка моего пакета

R> devtools::test(synthACS)
══ Results ═════════════════════════

OK:       388
Failed:   0
Warnings: 0
Skipped:  0

R> devtools::check(synthACS)
...
─  checking tests ...
E  Running ‘testthat.R’ (1.5s)

── Test failures ─────────────────────

> library(testthat)
> 
> load(system.file("testdata", 'acsdata.rda', package= "synthACS"))
> test_check("synthACS")
 ----------- FAILURE REPORT -------------- 
... indicates that the data is not loaded ...

Любая помощь приветствуется!

Редактировать ссылки на полный код:

Ответы [ 2 ]

0 голосов
/ 01 июня 2020

Правильный ответ - использовать readRDS, что означает сохранение каждого объекта отдельно через saveRDS

, например,

my_data <- readRDS(file= system.file("testdata", 'dat-mydata.rds', package= "synthACS"))

0 голосов
/ 28 мая 2020

R Проверке CMD не важно, что находится в вашем каталоге / tests, пока есть файл, который он может запустить для выполнения ваших тестов (и они проходят). Точно так же testthat не заботится о других каталогах в / tests. Таким образом, вы можете поместить свой файл в каталог, скажем, в /tests/resources.

Пример здесь: https://github.com/jeroen/openssl/tree/master/tests

...