单元测试假设存在数据库表是否可以接受?
例如,如果有一个 UserStore 类和关联的 UserStoreTest 测试类。假设这个类是一个系统的一部分,当安装它时,这个类需要一个名为 foo_users 的表的“实例”。那么 UserStoreTest 是否可以假设该表存在并使用它?要求 UserStoreTest 类设置表本身而不依赖于系统的状态似乎更好,这是相当全局的。前一种方法可以接受吗?
单元测试假设存在数据库表是否可以接受?
例如,如果有一个 UserStore 类和关联的 UserStoreTest 测试类。假设这个类是一个系统的一部分,当安装它时,这个类需要一个名为 foo_users 的表的“实例”。那么 UserStoreTest 是否可以假设该表存在并使用它?要求 UserStoreTest 类设置表本身而不依赖于系统的状态似乎更好,这是相当全局的。前一种方法可以接受吗?
最好的方法可能是找出一种模拟数据库的方法,而不是实际连接到真实数据库。维护数据库的模拟有一些开销,但有很多优点。
如果模拟您的数据库连接是不可行的,那么一个很好的中间立场可能是拥有一个与您的真实/生产数据库分开的测试数据库。这样,您可以避免将测试套件连接到真实数据库的担忧,同时保留对数据库的完全控制以进行测试。