unit-testing - 如何在测试前设置对象
问题描述
我在 Codeception 中设置了一些单元测试,需要创建一个对象的实例。我可以在 _before 中执行此操作,但这会在每次测试之前创建一个新实例。我曾尝试使用 _beforeSuite,但 Object 的构造函数需要一个环境变量,据我了解,这不起作用,因为 beforeSuite 在引导之前运行?当我尝试这个时,我似乎得到了 null 而不是变量。
我是测试新手,所以我很好奇在 _before 中创建对象是否可以,或者我是否应该使用其他东西?
解决方案
一般来说,您在测试中应该争取的是,在执行您的被测系统 (SUT) 时,这发生在明确定义的上下文中。在测试执行期间,您希望控制所有可能影响 SUT 执行的方面。因此(通常)不建议在测试之间重用对象,因为之前的测试可能已经对对象进行了修改。这可能会对以后的测试结果产生影响。即使您知道执行测试的确切顺序,反对在测试之间共享对象的建议仍然有效(测试应该是独立的 - 网络上有很多关于此的信息,例如为什么在单元测试中测试不应该依赖于执行顺序? )。
因此,除非在特殊情况下,否则您希望每次测试都有一个新对象。您可以在 中创建它_before
,但在每个需要它的测试用例中直接创建它可能会更好(出于可读性目的)。
推荐阅读
- java - 使用私钥解码 SecretKey
- php - PHP如何检查Json
- floating-point - vulkan浮点行为的问题
- python - Python 错误,“NumPy 布尔数组索引分配需要 0 或 1 维输入,输入有 2 维”
- database-design - WarGames 的数据库结构 - 玩家 - 奖励
- c# - 如何为测验应用程序创建控制台计时器
- c++ - 犰狳的 print() 方法和 cout 从 Rcpp 调用时的顺序不一致
- python - Eratosthenes 实施的慢筛。为什么?
- mysql - docker-compose:依赖容器在依赖的 MySQL 容器完全初始化之前运行
- python - 从 Python 中的数据框创建起点-终点矩阵