有没有办法用文字编程进行测试驱动的开发?

时间:2013-11-05 23:37:46

标签: r unit-testing literate-programming

我正在学习用R进行我的第一次单元测试,并且我在R Markdown文件中编写了我的代码,以便轻松提供简短的研究报告。同时,我想测试我在这些文件中使用的函数,以确保结果是合理的。

问题在于:R Markdown文件是用于编织HTML编织器,而不是RUnit测试工具。如果我想将一个函数加载到测试代码中,我有几个选择:

  1. 从Markdown文件中复制粘贴代码块,将Markdown文档中的代码与测试代码分离
  2. 将我的测试代码放入Markdown文件中,这使得报告难以理解(可能最终会容忍)
  3. 编写代码,首先对其进行测试,然后将其作为Markdown代码中的库包含在内,这将消除报告正文中代码的信息性特征
  4. 有没有更明智的方法可以避免这些方法的缺点?

1 个答案:

答案 0 :(得分:8)

你可以做这样的事情

## 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)
```

当然,通过的测试不会打印任何内容,但是失败的测试会打印有关失败的有意义的消息。