簡體   English   中英

使用check()測試失敗

[英]testthat failure using check()

我正在嘗試在我的軟件包中添加一些測試,以確保在進行更改時保持原樣。 我這樣做有些困難。

我想測試我的包的主要功能,可以粗略地描述為插補方法。 因此,如果我給它一個nx 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文件進行比較表明它們是相同。

我發現哈德利的這句話( 在測試中 ):

有時,當使用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打印的進度條出現在Build窗格中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM