《C++代码整洁之道:C++17 可持续软件开发模式实践》 —2.5.9 如何处理数据库的访问

网友投稿 641 2022-05-29

2.5.9 如何处理数据库的访问

目前,许多软件系统都包含(依赖)数据库系统,将大量的对象和数据长期存储到数据库中,从而可以方便地从数据库查询这些对象和数据,当系统被关闭以后,这些对象和数据也不会丢失。

一个很重要的问题是:在单元测试期间,我们应该如何处理数据库的访问?

我对这个问题的第一个也是最重要的建议是:能不使用数据库进行单元测试,就不使用数据库进行单元测试。

—Gerard Meszaros, xUnit Patterns

在单元测试过程中,数据库可能会引起各种各样的问题。例如,如果许多单元测试使用同一个数据库,那么,这个数据库就会趋向于一个大的集中式的存储系统,这些单元测试必须为不同的目的而共享这个数据库。而这种共享,可能会对本章前面讨论过的单元测试的独立性产生不利的影响,可能很难保证每个单元测试所需的前提条件。一个单元测试的执行,可以通过共享的数据库对其他的单元测试产生不好的影响。

另一个问题是,数据库的存储速度是缓慢的。访问数据库的速度比访问计算机内存的速度要慢得多。与数据库交互的单元测试往往比完全不依赖于数据库的单元测试慢得多。假设你有几百个单元测试,每个单元测试需要额外的平均500毫秒的时间,这很有可能是由于查询数据库导致的。总之,访问数据库的单元测试比没有访问数据库的单元测试要多花费几分钟的时间。

《C++代码整洁之道:C++17 可持续软件开发模式实践》 —2.5.9 如何处理数据库的访问

我的建议是模拟数据库(参见本章后面5.2.12节“测试替身”),只在内存中执行所有的单元测试。不要担心,如果系统中存在数据库的使用,那么,在系统集成和系统测试级别会测试数据库

C++ c++

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:华为云应用平台ROMA融入全栈创新力量助力企业应用数字化转型
下一篇:ubuntu20.04使用杂记
相关文章