Есть ли способ сделать разработку через тестирование с грамотным программированием?

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

Вот проблема: R Markdown файлы предназначены для использования в ткачих HTML, а не в тестовом жгуте RUnit. Если я хочу загрузить функцию в тестовый код, у меня есть несколько вариантов:

  1. Скопируйте и вставьте фрагмент кода из файла Markdown, который отделяет код в документе Markdown от протестированного кода.
  2. Поместите мой тестовый код в файл Markdown, что затруднит понимание отчета (возможно, в конце будет допустимо)
  3. Напишите код, сначала протестируйте его, а затем включите его в качестве библиотеки в код Markdown, который устраняет информативный характер наличия кода в теле отчета.

Есть ли более разумный способ сделать это, чтобы избежать недостатков каждого из этих подходов?

1 ответ

Решение

Вы могли бы сделать что-то вроде этого

## Rmarkdown file with tests

```{r definefxn}
foo <- function(x) x^2
```

Test fxn

```{r testfxn}
library(testthat)

expect_is(foo(8), "numeric")
expect_equal(foo(8), 6)
```

Конечно, при прохождении тестов ничего не печатается, но при неудачных тестах выводятся значимые сообщения о том, что не удалось.

Другие вопросы по тегам