我正在处理一些包含数据库访问的代码。测试驱动的开发是否包括集成测试以及通常的单元测试?
谢谢!
摘录自大书的<< [面向对象的软件的增长,由测试指导演示了TDD中的这两个反馈循环:
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9nNVhrSS5wbmcifQ==” alt =“ TDD”>
您的问题的答案是肯定的-TDD包括集成测试。这是不打破TDD黄金法则的唯一方法。
解决方案是大部分时间不使用真实的数据库
尽管如此,它仍然不能阻止您编写其他一些测试来验证您的生产代码是否可以与实际的数据库或相关的昂贵资源(如果需要的话)进行很好的结合:
如果模拟对象的行为不像真实对象怎么办?您可以通过对模拟对象进行一系列测试来减少这种策略也可以应用于可用的真实对象。
总而言之,我认为整个集成与单元测试之间的关系与TDD正交。换句话说:作为原子构造块,只有一个小的红色/绿色/重构反馈循环并不能确定您应该选择整个应用程序开发工作流程的哪种风格,还是应该围绕着其他其他反馈循环-它可能被接受@lazyberezovsky解释,从里到外或从里到外,以集成为中心或以隔离为中心,等等,只要您对测试优先的方法保持真实。
进行