testэта схема для длительных тестов

У меня есть куча тестов, которые я не хочу запускать во время проверок CRAN или сборок Travis CI. Они либо долго выполняются, либо могут вызвать конфликты транзакций/параллельного доступа при записи в сетевую базу данных. Какой подход к их отделению (от контрольных тестов R CMD) лучше всего подходит для testthat?

Должен ли я поместить эти тесты в отдельную папку? Должен ли я пометить их имя файла и использовать регулярное выражение? (например, Использование аргумента фильтра в test_package для пропуска тестов от @Jeroen)

http://cran.r-project.org/web/packages/policies. HTML:

Длительные тесты и код виньетки можно сделать необязательными для проверки, но убедитесь, что оставшиеся проверки действительно используют все функции пакета.


person wibeasley    schedule 31.08.2014    source источник
comment
Если вы поместите их в другой каталог в тестах, вы все равно сможете протестировать их вручную с помощью test_dir(), но они не будут работать с test() или R CMD check. Например. В R6 есть несколько ручных тестов: github.com/wch/R6/tree/master/tests< /а>   -  person Gabor Csardi    schedule 01.09.2014
comment
Мне нравится этот @GaborCsardi и то, как тесты собраны вместе, но различаются test() и test_dir().   -  person wibeasley    schedule 02.09.2014
comment
@GaborCsardi это было именно то, что я искал, и это хорошо сработало для моего пакета потребности. Если вы измените свой комментарий на ответ, я хотел бы отдать должное вашему ответу.   -  person wibeasley    schedule 04.09.2014


Ответы (2)


Если вы поместите их в другой каталог внутри tests, вы все равно сможете протестировать их вручную с помощью test_dir(), но они не будут работать с test() или R CMD check.

Например. В R6 есть несколько ручных тестов: https://github.com/wch/R6/tree/master/tests

person Gabor Csardi    schedule 04.09.2014

К вашему сведению: testthat 0.9 теперь поставляется с функцией skip().

Однако я не могу понять, как/где именно его использовать. Помещая мою функцию test_that(), тест все равно выполняется. Если поставить перед testthat(), то skip() выдает ошибку.

person Rappster    schedule 26.09.2014
comment
Спасибо, что упомянули об этом -- я видел объявление о выпуске несколько дней назад. Сразу внутри тестовых функций я добавил вроде testthat::skip_on_cran(). Это хорошо подходит для некоторых моих тестов, потому что основная причина, по которой я хотел провести некоторые ручные тесты, заключается в том, что они не будут отклонены CRAN, если сервер не будет бодрым прямо сейчас. Мне все равно, если проверки Travis-CI или R-Forge не пройдены, потому что их легко повторить. - person wibeasley; 29.09.2014
comment
Не могли бы вы сказать мне, как именно вы используете skip() и/или skip_on_cran()? Куда мне нужно его поместить, чтобы пропустить конкретный тест при запуске test_package() или CRTL+SHFT+T в RStudio? - person Rappster; 29.09.2014
comment
Спасибо чувак. Я так делал и почему-то не работало, а теперь работает ;-) Должно быть что-то другое - person Rappster; 01.10.2014
comment
Обратите внимание, что для пропуска (по крайней мере, в текущей версии dev) требуется аргумент сообщения. Например. внутри test_that( использовать if (is.friday(today())) skip("Not today.") - person jan-glx; 04.10.2015