R testthat和devtools:为什么最小的单元测试会破坏我的程序包?

时间:2018-12-01 16:09:45

标签: r devtools s4

我正在研究用于稀疏矩阵处理的R包。有点用;这是为我的问题打下基础的一个最小例子。

devtools::install_github("ekernf01/MatrixLazyEval", ref = "eef5593ad")
library(Matrix)
library(MatrixLazyEval)
data(CAex)
M = rbind(CAex, CAex)
M = matrix(stats::rnorm(prod(dim(M))), nrow = nrow(M))
M_lazy = AsLazyMatrix( M )
svd_lazy = RandomSVDLazyMatrix(M_lazy)

但是,即使运行最小的单元测试,它也会永久破坏软件包(我必须重新启动R会话或重新安装软件包)。直接原因是R无法从我依赖的包中找到某些S4方法(例如,对于t包中的矩阵转置colSumsMatrix)。我像这样运行单元测试:

devtools::test(filter = "minimal")
svd_lazy = RandomSVDLazyMatrix(M_lazy)

这是测试文件的内容。

> cat tests/testthat.R
library(testthat)
testthat::test_check("MatrixLazyEval")
> cat tests/testthat/testthat_minimal.R
context("minimal")

为什么会这样?也许这很幼稚,但是单元测试什至不做任何事情。

编辑

可能相关:

r - data.table and testthat package

https://github.com/r-lib/devtools/issues/192

R data.table breaks in exported functions

0 个答案:

没有答案