SuperAPI AI 工具集

creating-oracle-to-postgres-migration-integration-tests

数据与分析

查看项目

更新于 10-16 07:20

技能介绍

用途:为单个目标项目中的数据访问构件生成集成测试。测试针对 Oracle,捕获 Oracle 的预期行为作为权威基线;断言按逻辑可移植方式编写,便于第 6 阶段迁移到 PostgreSQL 后无需重写,但此阶段不对 PostgreSQL 运行。

前提:测试项目须已存在且可编译(单独搭建)。编写测试前先阅读现有基础测试类与种子管理器约定。

流程:1) 发现测试项目约定:阅读基础测试类、种子管理器和项目文件,理解继承模式、事务管理与种子文件约定。2) 识别可测试的数据访问构件:仅限目标项目,列出与数据库交互的方法,如仓储、DAO、存储过程调用、查询构建器。3) 创建种子数据:遵循现有位置与命名约定;避免 TRUNCATE TABLE,保留现有数据库数据;假定业务行和查找行已存在,仅添加最小且防冲突的种子记录;不提交种子数据,测试在会回滚的事务中运行;确保种子数据不与其他测试冲突;在断言依赖前加载并验证种子数据;创建或复用测试 LookupConstants 类以提供稳定查找 ID/代码。4) 编写测试用例:继承基础测试类以获得自动事务创建/回滚;范围内每个触碰数据库的方法至少有一个集成测试(高风险分支可多测);断言逻辑输出(行、列、计数、错误类型),而非平台特定消息;断言具体期望值,不要仅断言非空或非空字符串;避免测试不存在的路径或不可能发生的行为;避免对同一方法的冗余断言;文本参数酌情覆盖空字符串和 NULL/缺失;日期时间行为需验证写入与读回值匹配,使用 Oracle 列精度(如无小数秒的日期/时间列只到秒),不假设特定数据库类型语法。5) 检查确定性:重新审视每个针对非空值的断言,确认其对照种子数据是确定性的,修正依赖测试无法控制的数据库状态的断言。

关键约束:仅第 3 阶段,测试面向 Oracle,不要在第 6 阶段或面向 PostgreSQL 的项目中调用;Oracle 是黄金来源;断言可移植,避免平台特定错误消息或语法;仅对 Oracle 播种;仅限一个项目;保留现有数据,绝不重写或清空已有业务或查找行。官方资料未提供的细节暂未提供。