【发布时间】:2026-01-24 18:25:02
【问题描述】:
我有一系列针对大型对象的单元测试(下面的 MWE 中的y)。我在testthat.R 中构造了y,如果我运行R CMD check,则测试通过,但如果我运行devtools::test(),则测试通过。
如何确保devtools::test() 在正确的环境中运行测试?或者使对象可用于所有测试的规范方法是什么?
https://github.com/HughParsonage/testGlobalEnv
./tests/testthat.R
library(testthat)
library(testGlobalEnv)
y <- 1:5
test_check("testGlobalEnv")
./R/adder.R
#' Adds numbers
#' @param x A vector of numbers
#' @export
adder <- function(x){
sum(x)
}
./tests/test_adder.R
test_that("adder", {
expect_equal(adder(y), 15)
})
R CMD check 显示测试通过;但是,运行 devtools::test():
1
Failed -------------------------------------------------------------------------------------------------------------------
1. Error: adder (@test_adder.R#2) ----------------------------------------------------------------------------------------
object 'y' not found
1: expect_equal(adder(y), 15) at C:\Users\Hugh Parsonage\Documents\Github\testGlobalEnv/tests/testthat/test_adder.R:2
2: compare(object, expected, ...)
3: adder(y)
【问题讨论】:
-
这是正在测试的包的名称。
-
install_github('HughParsonage/testGlobalEnv') -
y <- 1:5是否需要存在于test_adder.R内部(甚至存在于test_that("adder", {})内部? -
这可以防止错误,但我想避免将它添加到每个测试中(因为它不是 CMD 检查所必需的)。
标签: r unit-testing devtools