如何在单元测试中重用示例?

时间:2017-08-30 12:26:10

标签: r unit-testing documentation roxygen2 testthat

假设我有一个函数,记录了一个例子(使用roxygen):

#' @title Add two numbers
#' @param x a scalar
#' @param y a scalar
#' @examples 
#' testobj <- add(x + y)

add <- function(x, y) {
  return(x+y)
}

现在我还要想对结果对象运行一些测试,以确保该函数能够正常运行。 我将testthat用于此:

context("Adding stuff")

testobj <- add(x, y) # THIS is the duplicate line that bothers me.

test_that(desc = "Additions work", code = {
  testthat::expect_length(object = x, n = 1)
})

我如何重复使用示例中创建的testobj ,然后在testthat中对其进行一些测试?

在这种情况下,这是微不足道的,但如果功能更复杂,则会导致大量重复。

或者我使用这个错误?

1 个答案:

答案 0 :(得分:1)

您可以使用从example导出的utils函数来运行函数文档中包含的示例。

testobj <- example(add)
# add> testobj <- add(x, y)

请注意,建议您在roxygen评论中使用具体示例:

而不是

#' @examples 
#' testobj <- add(x, y)

使用

#' @examples 
#' testobj <- add(2, 3)