我正在研究一个R软件包,其中在测试安装过程中(在安装文件中)定义了列表对象。
obj_1 <- list(a = A, b = B)
此后,对obj_1
的所有元素的测试将循环执行。现在,我发现我实际上不需要对象B。因此,我在设置期间排除了B的创建,并使用obj_1 <- list(a = A)
第二次运行测试。奇怪的是,在测试循环中似乎在obj_1中找到了b并且测试失败,因为找不到B。如果我重新启动R并重新运行测试,一切都会通过。不知何故,似乎obj_1(带有A和B)都从第一次测试开始就存储在测试环境中。
在测试结束时,我需要rm(list = ls())
之类的东西,包括在teardown.R文件中的此语句不能解决问题。 withr::defer(cleanup(), teardown_env())
也无济于事。以某种方式,我认为可以使用此处描述的一种方法解决此问题:https://testthat.r-lib.org/articles/test-fixtures.html
是否应该自动清理测试环境?