首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RUnit:找不到函数"checkEquals“

RUnit:找不到函数"checkEquals“
EN

Stack Overflow用户
提问于 2015-12-14 14:03:50
回答 1查看 223关注 0票数 1

我正在创建一个具有标准目录层次结构的R包。在R目录中,我创建一个test子目录。

R目录中,我创建了一个包含以下内容的uTest.R文件:

代码语言:javascript
复制
uTest <- function() {
  test.suite <- defineTestSuite('test',
                               dirs = file.path('R/test'))
  test.result <- runTestSuite(test.suite)
  printTextProtocol(test.result)
}

R/test目录中,我创建了一个包含以下内容的runit.test.R文件:

代码语言:javascript
复制
test.validDim <- function() {
  testFile <- "test/mat.csv"

  generateDummyData(testFile,
                    10,
                    10)

  checkEquals(validDim(testFile), TRUE)
}

我在Rstudio中使用R CMD INSTALL --no-multiarch --with-keep.source RMixtComp构建和安装包。当我试图启动函数uTest()时,会收到以下错误消息:

代码语言:javascript
复制
1 Test Suite : 
test - 1 test function, 1 error, 0 failures
ERROR in test.validDim: Error in func() : could not find function "checkEquals"

但是,如果我在调用library(RUnit)之前调用了uTest(),那么一切都正常。在import文件的DESCRIPTION字段中,我添加了RUnit,在NAMESPACE文件中添加了import(RUnit)

如何在加载包后直接调用uTest(),而不手动加载RUnit?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-15 05:11:35

您不应该将RUnit添加到描述文件中的“依赖”(或“导入”)字段中(尽管注释相反)。这样做意味着为了使用您的包,RUnit包是必要的,情况可能不是这样。换句话说,将RUnit放入“依赖”或“导入”意味着需要安装(导入)和用户的搜索路径(依赖),以便他们使用您的包。

您应该将RUnit添加到描述文件中的建议字段中,然后按如下所示修改uTest函数:

代码语言:javascript
复制
uTest <- function() {
  stopifnot(requireNamespace("RUnit"))

  test.suite <- RUnit::defineTestSuite('test', dirs = file.path('R/test'))
  test.result <- RUnit::runTestSuite(test.suite)
  RUnit::printTextProtocol(test.result)
}

这样做可以让您在测试中使用RUnit,但不需要用户安装RUnit (可能在他们的搜索路径上)才能使用包。显然,如果他们想要运行您的测试,就需要RUnit。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34268946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档