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