tl;博士我想在一个包上运行devtools::test(),让它跳过测试等等,就像它在CRAN上运行一样,但我不知道如何运行。
据我所知,testthat::skip_on_cran()检查环境变量NOT_CRAN,如果没有在CRAN上运行测试,则应该将该变量设置为"true“(为了支持这一点,底层测试函数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“模式下运行devtools::test() 。test()对此没有明确的参数(它有“传递给包装函数的附加参数”的...,但我看不到任何相关的向下挖掘),而且使用withr::with_envvar()似乎没有帮助。devtools::check()确实有一个显式的env_vars参数,但是我希望能够运行测试,而不需要通过整个包检查过程.
很抱歉,这不是完全可复制的;如果需要的话,我可以尝试构建一个最小的包来显示行为.
发布于 2022-09-22 16:45:20
不确定您是否还有这个问题,但是我将这一行放在我的第一个测试文件的顶部,它在R4.2.1中工作。
Sys.setenv(NOT_CRAN='skip')https://stackoverflow.com/questions/68369058
复制相似问题