首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >被测试和skip_on_cran()混淆

被测试和skip_on_cran()混淆
EN

Stack Overflow用户
提问于 2021-07-13 20:39:03
回答 1查看 239关注 0票数 11

tl;博士我想在一个包上运行devtools::test(),让它跳过测试等等,就像它在CRAN上运行一样,但我不知道如何运行。

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

代码语言:javascript
复制
!identical(Sys.getenv("NOT_CRAN"), "true")

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

代码语言:javascript
复制
cat("ON CRAN:", testthat:::on_cran(), "\n")

在我的测试文件中,这样我就可以看到R/testthat在想什么。

环境变量按我想要的方式设置(即,输出包括ON CRAN: FALSE),如果我使用

代码语言:javascript
复制
source([testfile], echo = TRUE)

(即不做任何特殊操作来设置或取消设置NOT_CRAN环境变量)或

代码语言:javascript
复制
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“模式下运行devtools::test() test()对此没有明确的参数(它有“传递给包装函数的附加参数”的...,但我看不到任何相关的向下挖掘),而且使用withr::with_envvar()似乎没有帮助。devtools::check()确实有一个显式的env_vars参数,但是我希望能够运行测试,而不需要通过整个包检查过程.

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-22 16:45:20

不确定您是否还有这个问题,但是我将这一行放在我的第一个测试文件的顶部,它在R4.2.1中工作。

代码语言:javascript
复制
Sys.setenv(NOT_CRAN='skip')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68369058

复制
相关文章

相似问题

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