如何在测试前设置对象
How to Setup an Object before testing
我正在 Codeception 中设置一些单元测试,需要创建对象的实例。我可以在 _before 中执行此操作,但这会在每次测试之前创建一个新实例。我曾尝试使用 _beforeSuite,但 Object 的构造函数需要一个环境变量,据我了解,这不会起作用,因为 beforeSuite 是 运行 before bootstrap?当我尝试这个时,我似乎得到的是 null 而不是变量。
我是测试新手,所以我很好奇是否可以在 _before 中创建对象,或者我是否应该使用其他东西?
您在一般测试中应该努力做到的是,在执行您的被测系统 (SUT) 时,这是在明确定义的上下文中发生的。在测试执行期间,您希望所有可能影响 SUT 执行的方面都受到控制。因此(通常)不建议在测试之间重复使用对象,因为之前的测试可能已经对对象进行了修改。这可能会对以后的测试结果产生影响。即使您知道测试执行的确切顺序,反对在测试之间共享对象的建议仍然有效(测试应该是独立的——网络上有很多关于此的信息,例如 Why in unit testing tests should not depend on the order of execution?)。
因此,除非在特殊情况下,否则最好每次测试都有一个新对象。您可以在 _before
中创建它,但直接在每个需要它的测试用例中创建它甚至可能更好(出于可读性目的)。
我正在 Codeception 中设置一些单元测试,需要创建对象的实例。我可以在 _before 中执行此操作,但这会在每次测试之前创建一个新实例。我曾尝试使用 _beforeSuite,但 Object 的构造函数需要一个环境变量,据我了解,这不会起作用,因为 beforeSuite 是 运行 before bootstrap?当我尝试这个时,我似乎得到的是 null 而不是变量。
我是测试新手,所以我很好奇是否可以在 _before 中创建对象,或者我是否应该使用其他东西?
您在一般测试中应该努力做到的是,在执行您的被测系统 (SUT) 时,这是在明确定义的上下文中发生的。在测试执行期间,您希望所有可能影响 SUT 执行的方面都受到控制。因此(通常)不建议在测试之间重复使用对象,因为之前的测试可能已经对对象进行了修改。这可能会对以后的测试结果产生影响。即使您知道测试执行的确切顺序,反对在测试之间共享对象的建议仍然有效(测试应该是独立的——网络上有很多关于此的信息,例如 Why in unit testing tests should not depend on the order of execution?)。
因此,除非在特殊情况下,否则最好每次测试都有一个新对象。您可以在 _before
中创建它,但直接在每个需要它的测试用例中创建它甚至可能更好(出于可读性目的)。