【问题标题】:Is there a way to do test-driven development with literate programming?有没有办法通过文学编程进行测试驱动开发?
【发布时间】:2013-11-05 23:37:45
【问题描述】:

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

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

  1. 从 Markdown 文件中复制粘贴代码块,从而将 Markdown 文档中的代码与测试代码解耦
  2. 把我的测试代码放在 Markdown 文件里面,导致报告难以理解(或许最后还能忍受)
  3. 编写代码,先对其进行测试,然后将其作为库包含在 Markdown 代码中,从而消除了将代码包含在报告正文中的信息特征

有没有更明智的方法来避免这些方法的缺点?

【问题讨论】:

标签: r unit-testing literate-programming


【解决方案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)
```

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

【讨论】:

  • 你也可以保存测试的结果,然后让后面的代码块只在所有测试都通过时才包含/评估。
  • 那行得通。代码 sn-p 标签中的 echo=FALSE, eval=FALSE 允许我控制测试是否出现在编织输出中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多