【问题标题】:devtools::test() works but devtools::check() doesn't. Why?devtools::test() 有效,但 devtools::check() 无效。为什么?
【发布时间】:2018-03-02 05:21:23
【问题描述】:

我正在测试this R 包。

以下三件事可以正常工作:

但是,下面的事情

  • devtools::check()
  • devtools::build_win() #(见 win-builder 输出here

产生这个错误:

R CMD 检查结果 1 错误 | 0 个警告 | 0 笔记检查测试... 错误运行“testthat.R”在“tests/testthat.R”中运行测试 失败的。最后 13 行输出:40: mutate_.data.frame(., city_pop = ~readr::parse_number(Population..4), metro_pop = ~readr::parse_number(Population..5), urban_pop = ~readr::parse_number(Population..6), Country = ~gsub(",", "_", Country)) 41: mutate(.data, !(!(!dots))) 42: mutate.data.frame(.data, !(!(!dots))) 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 单元测试失败执行停止

此外,old release Travis-CI job 会引发关于 dplyrreadr 丢失的错误,development release Travis-CI job 会引发关于无法连接到数据库的错误。 (我有点怀疑这些错误与上述无关。)

我读过thisthisthisthis 但这些似乎都不是我的问题。

我已经尝试了所有常用的技巧,并且我相当有信心代码中实际上没有错误,只是某种环境/NAMESPACE 不匹配,我不理解和不理解'不知道如何调试。

有什么想法吗?我在Ubuntu 上使用R 3.4.1

MWE

# shell
git clone git@github.com:beanumber/etl.git
# R
library(devtools)
test()
check()

【问题讨论】:

  • 我实际上解决了我自己的问题(我使用了错误的包名的test_check()——说来话长!)但仍然很高兴看到这个问题的好答案。过去我遇到过很多问题,在 check()test() 环境中相对于简单地 source()ing 相关文件很奇怪......

标签: r unit-testing travis-ci devtools


【解决方案1】:

我认为最好的答案(也是我经常使用的答案,尤其是在为他人或“自用”包编写代码时)是在使用从其他包导入的函数时使用约定 package_name::function()。

例如:

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())

不会工作。 dplyr::summarise() 将 (这样做实际上会引发非常有用的警告)。

总体而言,每次加载库时,您都会收到一条声明,说明包中的哪些函数已在其他地方定义。例如。对于我笔记本电脑上的 dplyr: 以下对象被“package:base”屏蔽: 相交,setdiff,setequal,联合

如果您查看这些警告,您会发现哪些函数不能/不应再调用。请注意,在上述情况下,基函数“union”现在只能由 base::union 调用,union() 的标准调用将使用 dplyr 函数。换句话说,最近加载的库是“默认”使用的库。

希望有所帮助

【讨论】:

    猜你喜欢
    • 2020-02-18
    • 2017-06-10
    • 2014-03-07
    • 2020-09-01
    • 1970-01-01
    • 2020-10-13
    • 2021-04-29
    • 2015-09-11
    • 2020-11-05
    相关资源
    最近更新 更多