如何在调用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
相关产品推荐
相关产品推荐

