R-使用Check()测试故障



我正在尝试将一些测试添加到我的软件包中,以确保在我进行更改时会保持原样。我在这样做时遇到了一些困难。

我想测试包装的主要功能,可以将其大致描述为插补方法。因此,如果我将n x 2矩阵Y给它,其中第二列具有一些NA,则应返回Z,其中YZ中的第一列是相同的(因为它是完全观察到的),并且应归纳第二列Z的第二列中没有NA

显然,该功能还有其他几个输入,但是我的测试的主要结构是

context("Test output")
test_that("First column equal", {
  set.seed(100)
  Y <- matrix(rnorm(200), 100, 2)
  Y[seq(1, 100, by = 3), 2] <- NA
  out <- my_fun(Y)
  expect_equal(Y[, 1], out[, 1])
})

我的问题是这不起作用。当我运行devtools::test()时,它起作用,但在运行devtools::check()时不行。我尝试使用expect_equal_to_reference()(因为我真正想测试的内容比此示例更大,更令人震惊),但是尽管在控制台中运行代码并与已保存的.rds文件进行比较,但它也会引发错误。/p>

我发现了哈德利(在测试中)的这句话:

偶尔您可能会遇到问题,而运行时测试通过 与DevTools :: test()进行交互式,但在R CMD检查中失败。 这通常表明您对 测试环境,通常很难弄清楚。

它不是很好,但是我该怎么办?有任何想法吗?

这是我遇到的错误(test_file是包含上述代码的文件的名称):

checking tests ...
** running tests for arch 'i386' ... ERROR
Running the tests in 'tests/testthat.R' failed.
Last 13 lines of output:
  3: asNamespace(ns)
  4: getNamespace(ns)
  5: tryCatch(loadNamespace(name), error = function(e) stop(e))
  6: tryCatchList(expr, classes, parentenv, handlers)
  7: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  8: value[[3L]](cond)
... 13 lines ...
  5: tryCatch(loadNamespace(name), error = function(e) stop(e))
  6: tryCatchList(expr, classes, parentenv, handlers)
  7: tryCatchOne(expr, names, parentenv, handlers[[1L]])
  8: value[[3L]](cond)
  testthat results ================================================================
  OK: 0 SKIPPED: 0 FAILED: 1
  1. Error: First column equal (@test_file.R#12) 

答案很简单。该软件包需要在测试文件中加载,以便以下内容:

library(mypackage)
context("Test output")

我认为它以前起作用,但实际上却没有。现在,包装已正确加载,我可以看到例如my_fun打印的进度条出现在构建窗格中。

最新更新