背景:
- 适度的数据库模式(大约 70 个表)
- 它们之间有很多外键和其他约束(非空等)
- 用于所有测试的共享数据库夹具
- 一些简单的拆解逻辑,在每次测试后截断“触摸”表,并将测试前的任何内容放在那里
- 数据库由 JPA/Hibernate/Toplink 或其他一些对象关系映射解决方案查询
现在,最大的问题是我们想要将一些记录添加到数据库中,我们现在必须手动执行此操作,即通过 sql 脚本(在相关测试之前执行)。这在我们进行的几乎每一个测试中都会导致一个神秘客人问题。
你会怎么处理呢?
我的想法如下:
- 为每个测试创建一个新的夹具将是一个矫枉过正,因为我们真的有很多限制
- 另一种方法是创建一些oracle,给定一个对象的存根,它将返回一个准备好放入数据库的对象,即不违反任何约束。当然,我们的经理并不喜欢这个不错的解决方案,因为我们必须花一些时间来创造这样一个野兽。