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