被 testthat 和 skip_on_cran() 弄糊涂了

问题描述

tl;dr 我想在一个包上运行 devtools::test() 并让它跳过测试等。好像它在 CRAN 上运行,但我可以不知道怎么做。

据我所知,testthat::skip_on_cran() 检查环境变量 NOT_CRAN,如果测试正在运行,则应将其设置为“true”值CRAN(为了支持这一点,底层测试函数 testthat:::on_cran() 等于

!identical(Sys.getenv("NOT_CRAN"),"true")

我正在尝试使用 skip_on_cran() 跳过一些测试。我想确认这些测试实际上会在 CRAN 上跳过我有一条线

cat("ON CRAN:",testthat:::on_cran(),"\n")

在我的测试文件中,以便我可以看到 R/testthat 认为发生了什么。

如果我使用,环境变量会按照我想要的方式设置(即,输出包括 ON CRAN: FALSE)/测试会被正确跳过)

source([testfile],echo = TRUE)

(即,无需事先设置或取消设置 NOT_CRAN 环境变量的任何特殊操作)或

withr::with_envvar(c(NOT_CRAN = "false"),devtools::test_active_file("tests/testthat/test-bootMer.R"))

(如果我运行 test_active_file() 而不包装它,我会得到 ON CRAN: FALSE)。

但是,我没有看到以类似方式运行所有测试(通过 devtools::test())的方法。换句话说,我不知道如何在“ON CRAN”模式下运行devtools::test()test() 没有明确的参数(它有 ... 是“传递给包装函数的附加参数”,但我看不到任何相关的向下挖掘),并使用 {{1 }} 似乎没有帮助。 withr::with_envvar() 确实一个明确的 devtools::check() 参数,但我希望能够在不经过整个包检查过程的情况下运行测试......

很抱歉这不能完全重现;如果需要,我可以尝试构建一个最小的包来显示行为......

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...