R devtools::test()可以工作,但devtools::check()不能';T为什么?
我正在测试R软件包 以下三件事很好:R devtools::test()可以工作,但devtools::check()不能';T为什么?,r,unit-testing,travis-ci,devtools,R,Unit Testing,Travis Ci,Devtools,我正在测试R软件包 以下三件事很好: devtools::test() devtools::test\u文件(“tests/testthat.R”) 但是,以下几点: devtools::check() devtools::build_win()#(请参见win builder输出) 产生此错误: R CMD检查结果1错误| 0警告| 0注释检查测试。。。 运行“testthat.R”时出错运行“tests/testthat.R”中的测试 失败。最后13行输出:40:mutate_u.
devtools::test()
devtools::test\u文件(“tests/testthat.R”)
devtools::check()
#(请参见win builder输出)devtools::build_win()
dplyr
和readr
的错误,并引发了一个关于无法连接到数据库的错误。(我有点怀疑这些错误与上述内容无关。)
我读过,但这些似乎都不是我的问题
我已经尝试了所有我常用的技巧,我非常确信代码中实际上没有bug,只是有某种环境/名称空间
不匹配,我不理解,也不知道如何调试
有什么想法吗?我正在使用R3.4.1
运行Ubuntu
MWE
# shell
git clone git@github.com:beanumber/etl.git
# R
library(devtools)
test()
check()
我认为最好的答案(也是我经常使用的答案,特别是在为他人或“自用”包编写代码时)是在使用从其他包导入的函数时使用约定包_name::function()
例如:
库(dplyr)
图书馆(plyr)
df%分组依据(b)%>%总结(平均值=平均值(a),计数=n()
这是行不通的。dplyr::summary()将
(这样做实际上是一个非常有用的警告)
总的来说,每次加载库时,都会得到一条语句,说明包中的哪些函数已经在别处定义。例如,对于笔记本电脑上的dplyr:
以下对象已从“package:base”屏蔽:
相交、setdiff、setequal、并集
如果您查看这些警告,您可以看到哪些函数不能/不应该再调用。注意,在上述情况下,基函数“union”现在只能由base::union调用,union()的标准调用将使用dplyr函数。换句话说,最近加载的库是“默认”使用的库
希望这有助于我实际解决了我自己的问题(我使用的是错误的包名的
test\u check()
,说来话长!),但我仍然很高兴看到这个问题的好答案。过去,我在check()
和test()
环境中遇到了许多问题,与简单地source()
加载相关文件相比,这些问题显然很奇怪。。。
library(dplyr)
library(plyr)
df <- data.frame(a=rnorm(10), b = c(rep("a",5),rep("b",5)))
df %>% group_by(b) %>% summarise(mean_value = mean(a), count = n())