You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在调用covr::package_coverage()时包含带skip_on_cran()的测试?

解决covr::package_coverage()不执行带skip_on_cran()的测试问题

问题原因

testthat::skip_on_cran()的判断逻辑是:当环境变量NOT_CRAN不等于"true"时,会跳过测试。而covr默认运行测试的环境中,该变量未被设置为"true",导致带该标记的测试被跳过。

解决方法

方法一:通过env_vars参数直接设置环境变量

调用package_coverage()时,传入env_vars参数指定NOT_CRAN="true",让skip_on_cran()识别当前不是CRAN环境:

covr::package_coverage(env_vars = list(NOT_CRAN = "true"))

方法二:在自定义测试代码中设置环境变量

如果需要使用type="none"配合自定义测试代码,需先设置环境变量再执行测试:

covr::package_coverage(
  type = "none",
  code = {
    Sys.setenv(NOT_CRAN = "true")
    devtools::test()
  }
)

以上两种方法都能让skip_on_cran()标记的测试正常执行,从而纳入覆盖率统计。

内容的提问来源于stack exchange,提问作者sfcheung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:32:41