集成测试 – 集成测试最佳实践

我们的团队有数百个集成测试,打到数据库并验证结果.我有两个基类用于所有集成测试,一个用于仅检索测试,一个用于创建/更新/删除测试.检索基类在TestFixtureSetup期间重新生成数据库,因此每个测试类只执行一次. CUD基类在每次测试之前重新生成数据库.每个存储库类都有自己相应的测试类.

你可以想象,这整个事情需要相当长的一段时间(接近7-8分钟才能快速成长).作为我们的CI(CruiseControl.Net)的一部分运行这不是一个问题,但是在本地运行需要很长时间,并且真正禁止在提交代码之前运行它们.

我的问题是有什么最佳做法可以帮助加快执行这些类型的集成测试?

我无法执行它们的内存(一个sqlite),因为我们使用一些数据库特定的功能(计算列等)sqlite不支持.

此外,整个团队必须能够执行它们,因此在SQL Server Express的本地实例上运行它们,否则某些事件可能会出错,除非这些实例的连接字符串都相同.

你在商店里如何完成这些工作呢?

谢谢!

最佳答案
保持快速(单位)和缓慢(集成)测试分开,以便您可以单独运行它们.使用任何方法对您的测试框架提供的测试进行分组/分类.如果测试框架不支持对测试进行分组,请将集成测试转移到仅具有集成测试的单独模块中.

快速测试只需要几秒钟即可运行所有这些测试,并且应该具有较高的代码覆盖率.这些测试允许开发人员无情地重构,因为他们可以做一个小的改变,并运行所有的测试,并非常有信心,这个变化没有破坏任何东西.

慢速测试可能需要几分钟的时间才能运行,并确保各个组件能够正常工作.当开发人员进行可能会破坏通过集成测试测试而不是单元测试的变更时,他们应该在提交之前运行这些集成测试.否则,慢速测试由CI服务器运行.

转载注明原文:集成测试 – 集成测试最佳实践 - 代码日志