我有一项功能配置应用程序的审计功能(MySQL数据库)。这是它的作用: - 获取所有数据库表结构 - 创建相应的审计表(或修改现有的) - 重新创建捕获任何数据更改的主表触发器
现在我正在考虑如何编写测试。我创建了实时集成测试修改数据库结构,运行此审计配置广告检查其正确性,但这不是我可以包含在应用程序中的测试(它修改了真实数据库)。 实际上是否可以对这样的功能进行单元测试,如果是的话?如何模仿和验证DDL的变化?
答案 0 :(得分:0)
为了完成这项工作,我决定测试查询生成(它们的正确性)。我将所有SQL语句(静态和动态)提取到单独的方法,然后使用部分模拟(Mockito)来执行这些方法并检查它们是否按预期生成SQL语句。这样我就不需要在实际中运行任何东西,并且仍然有90%的覆盖范围是真正的目标。关键部分是将所有SQL调用与main方法分开以启用部分模拟。