单元测试到底应该有多独立?在单元测试套件的“之前”部分应该做什么?
比如说,我正在测试服务器的功能——如果服务器被创建、初始化、连接到它的各种数据源等等。在每个测试用例的主体内。是否存在适合初始化服务器一次,然后测试多个情况的情况。
我正在考虑的另一种情况是移动应用程序测试——需要创建手机对象来执行单元测试。每次都应该这样做。创建手机,初始化,运行测试,销毁手机,重复?
单元测试到底应该有多独立?在单元测试套件的“之前”部分应该做什么?
比如说,我正在测试服务器的功能——如果服务器被创建、初始化、连接到它的各种数据源等等。在每个测试用例的主体内。是否存在适合初始化服务器一次,然后测试多个情况的情况。
我正在考虑的另一种情况是移动应用程序测试——需要创建手机对象来执行单元测试。每次都应该这样做。创建手机,初始化,运行测试,销毁手机,重复?
单元测试应该是完全独立的,即每个测试都应该能够以任何顺序运行,因此每个测试都需要有自己的初始化步骤。
现在,如果您在谈论服务器或电话初始化,它听起来更像是集成测试而不是单元测试。
理想情况下是的。每个测试都应该从头开始,并在执行被测功能之前将系统置于特定的定义良好的状态。如果你不这样做,那么当测试失败时,你就会更难隔离问题。更糟糕的是,您可能会导致测试不会失败,因为之前的测试留下了一些额外的状态。
如果您遇到设置时间过长的情况,您可以模拟或存根一些辅助对象。
如果您担心设置代码过多,可以将设置代码重构为可重用的函数。