对依赖于数据库的应用程序进行自动单元测试



我正在开发C++对数据库具有巨大依赖性的应用程序。如果我需要实现自动化单元测试,最好的选择是什么?

  1. 在数据库中插入测试函数所需的虚拟数据和调用测试函数。
  2. 模块化数据库操作代码和处理代码,但在遗留代码中可能不可行。
  3. 覆盖数据库操作,以便可以返回特定数据而不是实际的数据库命中;看起来很复杂。

理想情况下,单元测试不会与数据库交互,这些是集成测试,因为您希望单元测试快速且独立(FIRST原则(。 仅当对象和数据库交互之间有干净的分离时,这才有可能。 一个可能值得考虑的很好的折衷方案是为单元测试使用内存数据库,因为这将允许测试快速运行,并允许在测试之间灵活地休息数据。

要考虑的关键是如何以及何时重置数据库以确保测试是独立的并且可以按任何顺序运行,除非您专门编写要按给定顺序运行的测试。

然后,为了完整性,可以使用实际数据库编写集成测试。

最新更新