AIKraft/Skills/Тестирование пакетов R

Тестирование пакетов R

Best practices for writing R package tests using testthat version 3+. Use when writing, organizing, or improving tests for R packages. Covers test structure, expectations, fixtures, snapshots, mocking, and modern testthat 3 patterns including self-sufficient tests, proper cleanup with withr, and snapshot testing.

posit-dev official Документы

Что делает навык

Навык предоставляет лучшие практики написания тестов для R-пакетов с использованием testthat версии 3+. Он охватывает организацию структуры тестов, использование ожиданий (expectations), фикстур, снапшот-тестирования и современных паттернов, таких как самодостаточные тесты и очистка состояния через withr.

Когда применять

  • Инициализация новой системы тестирования в R-пакете с использованием testthat 3-го издания.
  • Написание самодостаточных тестов, которые не зависят от глобального состояния и корректно очищают побочные эффекты.
  • Тестирование сложных выводов с помощью снапшот-тестирования (snapshot testing).
  • Замена внешних зависимостей во время тестирования с помощью локального мокирования (local_mocked_bindings).
  • Организация тестовых данных с использованием фикстур или конструкторов функций.

Как работает

  1. Инициализировать тестирование командой usethis::use_testthat(3), что создаст директорию tests/testthat/ и настроит DESCRIPTION.
  2. Создавать тестовые файлы, зеркально отражающие структуру кода R, используя usethis::use_test() или вручную создавая файлы test-*.R.
  3. Структурировать тесты с использованием иерархии Файл → Тест → Ожидание, применяя test_that() или BDD-синтаксис describe()/it().
  4. Обеспечивать самодостаточность тестов, помещая весь код настройки, выполнения и очистки внутрь блока test_that() или используя функции withr::local_*().
  5. Использовать соответствующие ожидания (expect_equal, expect_error, expect_snapshot и др.) для проверки поведения, типов и структур данных.
  6. Запускать тесты через devtools::test() или devtools::check() и управлять снапшотами с помощью testthat::snapshot_review() и snapshot_accept().

Примеры запросов агенту

Инициализируй тестирование для моего R-пакета, используя testthat 3-го издания.
Напиши тест для функции foofy(), который проверяет корректность обработки данных и использует withr для временной настройки опций.
Создай снапшот-тест для проверки сообщения об ошибке функции validate_input().

Что понадобится

  • R-окружение с установленными пакетами testthat (версии 3+), usethis и devtools.

Описание составлено по SKILL.md навыка, сверено 05.10.2026.

Как подключить

1Скачать навык
# возьмите папку навыка «testing-r-packages» из репозитория: # https://github.com/posit-dev/skills
2Положить папку с SKILL.md к навыкам ассистента
# положите папку навыка туда, где ассистент ищет skills: cp -r testing-r-packages/ ~/.claude/skills/testing-r-packages/

Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.