您何时测试In-Memory Database与开发数据库?在哪些情况下您是否针对内存数据库而不是开发数据库进行测试?
另外,作为一个相关的问题,当您使用开发数据库时,您使用个人开发数据库,集成开发数据库还是两者?
另外++,对于单元测试,你什么时候使用内存数据库来模拟你的Repository/DAL等?
您何时测试In-Memory Database与开发数据库?在哪些情况下您是否针对内存数据库而不是开发数据库进行测试?
另外,作为一个相关的问题,当您使用开发数据库时,您使用个人开发数据库,集成开发数据库还是两者?
另外++,对于单元测试,你什么时候使用内存数据库来模拟你的Repository/DAL等?
对于我的团队来说,它是开发者机器上的内存,以及持续集成服务器上的真实数据库。
内存是您的单元的最佳选择-测试,当数据很容易为您给定的测试用例种子和正在测试的特定操作。对于集成测试,真实数据库更好,其中数据先决条件更加复杂,并且在测试完成后保留基础数据是有价值的。对于我们来说,我们在我们的“快速”JUnit测试套件中唯一允许的是没有任何外部依赖项(数据库,文件,网络等)的东西,这样套件就可以快速有效地运行由开发人员和持续集成的签入。如果有一个绝对需要去DB的测试,那么记住一个是唯一的方法。
有几点要记住:
至于你的其他问题,这真的取决于你的需要。一个好的经验法则是每个代码分支一个开发数据库,因为可能需要与另一个代码分支无关的模式更改。只有拥有一个专门的开发数据库很重要;我很惊讶有多少开发团队必须与QA团队共享数据库等。能够在不影响其他团队或防止其他团队工作的沙盒环境中进行更改非常重要,因此如果你已经满足了你做得很好的要求。