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

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

github.com/github测试与质量40.5k1.8k 次安装今天更新
代码仓库

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

为 .NET Oracle 到 PostgreSQL 迁移中的单个项目生成集成测试。测试以 Oracle 行为为基准,并采用可在后续迁移阶段保留的断言方式。

主要功能

  1. 01检查测试项目约定
  2. 02识别数据库访问方法
  3. 03创建隔离的种子数据
  4. 04编写可移植断言
  5. 05检查测试确定性

适用场景

  1. 01为仓储和 DAO 添加集成测试
  2. 02覆盖存储过程调用与查询构建器
  3. 03在迁移前记录 Oracle 行为

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/github/awesome-copilot --skill creating-oracle-to-postgres-migration-integration-tests

安装后在 Claude Code 中输入/creating-oracle-to-postgres-migration-integration-tests确认已加载。

详细介绍

为 Oracle 到 PostgreSQL 迁移创建集成测试

为单个目标项目中的数据访问构件生成集成测试用例。测试以 Oracle 为目标,并将其行为捕获为权威基线。测试编写为逻辑上可移植 —— 以便它们无需重写即可在 Phase 6 迁移后继续存活 —— 但在此阶段它们不会针对 PostgreSQL 运行。

先决条件

  • 测试项目必须已存在并可编译(单独搭建脚手架)。
  • 在编写测试之前,先阅读现有的基础测试类和种子数据管理器约定。

工作流

Test Creation:
- [ ] Step 1: Discover the test project conventions
- [ ] Step 2: Identify testable data access artifacts
- [ ] Step 3: Create seed data
- [ ] Step 4: Write test cases
- [ ] Step 5: Review determinism

Step 1:了解测试项目约定

阅读基础测试类、种子数据管理器和项目文件,以了解继承模式、事务管理和种子文件约定。

Step 2:识别可测试的数据访问构件

仅限定在目标项目范围内。列出与数据库交互的数据访问方法 —— 仓库、DAO、存储过程调用者、查询构建器。

Step 3:创建种子数据

  • 遵循现有项目中的种子文件位置和命名约定。
  • 避免使用 TRUNCATE TABLE —— 保持现有数据库数据完好无损。
  • 假设现有业务行和查找行已经存在;仅添加场景所需的最小、防冲突的种子记录。
  • 不要提交种子数据;测试在回滚的事务中运行。
  • 确保种子数据不与其他测试冲突。
  • 在断言依赖种子数据之前,先加载并验证种子数据。
  • 创建或复用一个测试 LookupConstants 类,用于种子构建器和断言中使用的稳定查找 ID/代码。

Step 4:编写测试用例

  • 继承基础测试类以获得自动的事务创建/回滚。
  • 确保范围内每个涉及数据库的方法至少有一个集成测试(对于高风险行为分支可有多个测试)。
  • 断言逻辑输出(行、列、计数、错误类型),而非平台特定的消息。
  • 断言具体的预期值 —— 当种子数据中有具体值时,绝不要仅断言某个值非空或非空字符串。
  • 避免测试不存在的代码路径或断言不可能发生的行为。
  • 避免针对同一方法的测试之间出现冗余断言。
  • 对于文本参数,在适用时包含空字符串和 NULL/缺失输入的覆盖。
  • 对于 datetime 行为,包含验证写入值与读回值匹配的断言 —— 使用 Oracle 列的精度(例如,对于没有小数秒的日期/时间列,仅精确到秒),而不是假设任何特定的数据库类型语法。

Step 5:审查确定性

针对非空值重新检查每个断言。确认每个断言相对于种子数据都是确定性的。修复任何依赖测试控制之外的数据库状态的断言。

关键约束

  • 仅限 Phase 3 —— 这些测试以 Oracle 为目标。不要在 Phase 6 期间或针对以 PostgreSQL 为目标的项目调用此技能。
  • Oracle 是黄金来源 —— 测试捕获 Oracle 的预期行为。
  • 断言可移植性 —— 避免在断言中使用平台特定的错误消息或语法,以便在 Phase 6 将测试项目迁移到 PostgreSQL 时,断言无需更改。
  • 仅针对 Oracle 播种 —— 测试项目将在 Phase 6 迁移到 PostgreSQL;在此之前,种子数据和基础设施保持以 Oracle 为目标。
  • 限定于一个项目 —— 不要为目标项目之外的构件创建测试。
  • 保留现有数据 —— 绝不重写或清除预先存在的业务行或查找行。

评论

支持 Markdown