R devtools::test()可以工作,但devtools::check()不能';T为什么?

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.

我正在测试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.data.frame(,city_upop) =~readr::parse_number(人口..4),metro_pop=~readr::parse_number(人口..5), 城市人口=~readr::解析人口数量(人口..6),国家=~gsub(“,”,“,”,国家))41:mutate(.data,!(!(!dots)))42: mutate.data.frame(.data,!(!(!点)))43: as.data.frame(mutate(tbl_-df(.data),…)44:mutate(tbl_-df(.data), …)45:mutate.tbl_-df(tbl_-df(.data),…)46:mutate_-impl(.data, (点) 测试结果===========================================================================================确定:34跳过:0失败:1 1.错误:城市工作(@test etl.R#113) 错误:testthat单元测试失败执行已暂停

此外,引发了一个关于缺少
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())