[英]testthat failure using check()
我正在嘗試在我的軟件包中添加一些測試,以確保在進行更改時保持原樣。 我這樣做有些困難。
我想測試我的包的主要功能,可以粗略地描述為插補方法。 因此,如果我給它一個nx 2
矩陣Y
,其中第二列有一些NA
,它應該返回Z
,其中Y
和Z
中的第一列是相同的(因為它完全被觀察到),第二列應該被估算到那里在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.