2015-02-26 3 views
3

В настоящее время я создаю пакет, который я надеюсь загрузить в CRAN. В примерах, которые я включил в мою справочную документацию, в настоящее время требуется некоторое время, чтобы проверить (всего ~ 12 минут), и я знаю, что это может быть проблемой при попытке загрузить на CRAN. Хотя я мог бы сделать мои примеры работать быстрее, я беспокоюсь, что это сделает их менее значимыми для пользователей, читающих файлы справки. Есть ли способ включить некоторые быстрые (но менее значимые) примеры, которые будут проверяться CRAN, но не будут видны пользователям в справочной документации?Создание коротких примеров для пакета CRAN

Я использую devtools и roxygen2 для написания своей документации, поэтому было бы здорово получить ответ, используя эти инструменты, если это возможно.

Благодарим за помощь.

+0

Если ваши примеры занимают много времени, вы можете упростить их столько, сколько сможете, и проконтролировать код R для повышения эффективности. –

ответ

2

Похоже, что вы хотели бы провести некоторое модульное тестирование, что является очень хорошей идеей при работе с более сложными пакетами. Ознакомьтесь с пакетом testthat (article, source).

Краткие и чисто технические примеры, необходимые для обеспечения правильной работы вашего пакета, но не имеющие особого отношения к конечному пользователю, затем перейдут в отдельную папку myPackage/tests. Они будут автоматически запускаться каждый раз при создании пакета, но не будут включены в файлы документации.

Рекомендуемое решение сделать файл с именем myPackage/tests/run-all.R:

library(testthat) 
library(myPackage) 
test_package("myPackage") 

затем поместить весь код тестирования в myPackage/tests/testthat, например, myPackage/tests/testthat/foo.R:

context("Basic operation") 

test_that("Default execution", { 
    a <- 4 
    b <- 34 
    expect_equal(myFunction(a, b), a + b) 
}) 

Причина для сдачи тестов в myPackage/tests/testthat, а не непосредственно в myPackage/tests, что myPackage/tests/testthat будут включены в окончательный пакет (хотя и в другой папке), которая позволяет пользователю также запускать тесты. myPackage/tests не будет скопирован в окончательный пакет.

+0

Тесты должны проходить в 'tests/testthat'. Старый 'inst/tests' будет устаревшим в будущей версии. – hadley

+0

Спасибо, я не знал об этом, но обновил ответ соответственно. – Backlin

1

См. Раздел manual, раздел 2.1.1, example подраздел. Вы можете приложить свои более тяжелые примеры в \dontrun, и они не будут проверены.

0

Если проблема связана с загрузкой CRAN, вы должны использовать команду \donttest{}, чтобы предотвратить запуск примеров на CRAN. Обратите внимание, что примеры все равно будут выполняться, если пользовательский тип example(xx)

+0

'\ donttest' больше не полезен, потому что этот код теперь протестирован: / – hadley

Смежные вопросы