2008-09-24 99 views

回答

2

对于我的团队来说,它是开发者机器上的内存,以及持续集成服务器上的真实数据库。

7

内存是您的单元的最佳选择-测试,当数据很容易为您给定的测试用例种子和正在测试的特定操作。对于集成测试,真实数据库更好,其中数据先决条件更加复杂,并且在测试完成后保留基础数据是有价值的。对于我们来说,我们在我们的“快速”JUnit测试套件中唯一允许的是没有任何外部依赖项(数据库,文件,网络等)的东西,这样套件就可以快速有效地运行由开发人员和持续集成的签入。如果有一个绝对需要去DB的测试,那么记住一个是唯一的方法。

有几点要记住:

  • 仔细想一想,如果你需要在单元测试都使用一个数据库 。它可能表示设计不佳 ,因为数据访问层是 与业务耦合得太紧 您试图测试的逻辑和 不能被嘲笑。
  • 如果使用真实数据库进行集成测试,请确保测试总是在完成时将数据恢复到原始状态。我看过很多浪费时间和集成测试失败的原因,因为其他一些测试搞砸了数据。

至于你的其他问题,这真的取决于你的需要。一个好的经验法则是每个代码分支一个开发数据库,​​因为可能需要与另一个代码分支无关的模式更改。只有拥有一个专门的开发数据库很重要;我很惊讶有多少开发团队必须与QA团队共享数据库等。能够在不影响其他团队或防止其他团队工作的沙盒环境中进行更改非常重要,因此如果你已经满足了你做得很好的要求。

相关问题