Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Creates integration test cases for .NET data access artifacts during Oracle-to-PostgreSQL database migrations. Generates DB-agnostic xUnit tests with deterministic seed data that validate behavior consistency across both database systems. Use when creating integration tests for a migrated project, generating test coverage for data access layers, or writing Oracle-to-PostgreSQL migration validation tests.
.claude/skills/creating-oracle-to-postgres-migration-integration-tests/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -51% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-20 | ✗→✓ | ▲ Improved | -3% | 0% |
Generates integration test cases for data access artifacts in a single target project. Tests target Oracle and capture its behavior as the authoritative baseline. They are written to be logically portable — so they can survive Phase 6 migration without rewriting — but they do not run against PostgreSQL at this stage.
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 determinismStep 1: Discover the test project conventions
Read the base test class, seed manager, and project file to understand inheritance patterns, transaction management, and seed file conventions.
Step 2: Identify testable data access artifacts
Scope to the target project only. List data access methods that interact with the database — repositories, DAOs, stored procedure callers, query builders.
Step 3: Create seed data
TRUNCATE TABLE — keep existing database data intact.LookupConstants class for stable lookup IDs/codes used across seed builders and assertions.Step 4: Write test cases
NULL/missing input coverage where applicable.Step 5: Review determinism
Re-examine every assertion against non-null values. Confirm each is deterministic against the seeded data. Fix any assertion that depends on database state outside the test's control.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→pass | 17,744 | 4,001 | -77% | 1 | 1 | 0% | 3,193 | 1,555 | -51% | 0 | 0 | — |
case-01 | pass→pass | 25,979 | 18,360 | -29% | 1 | 1 | 0% | 5,785 | 4,905 | -15% | 0 | 0 | — |
case-02 | fail→fail | 12,121 | 4,254 | -65% | 1 | 1 | 0% | 2,524 | 1,103 | -56% | 0 | 0 | — |
case-03 | fail→pass | 25,228 | 14,796 | -41% | 1 | 1 | 0% | 6,104 | 4,388 | -28% | 0 | 0 | — |
case-05 | fail→fail | 14,666 | 9,595 | -35% | 1 | 1 | 0% | 3,097 | 2,901 | -6% | 0 | 0 | — |
case-06 | pass→pass | 13,691 | 13,133 | -4% | 1 | 1 | 0% | 3,267 | 3,965 | +21% | 0 | 0 | — |
case-07 | pass→pass | 10,983 | 4,471 | -59% | 1 | 1 | 0% | 1,924 | 1,676 | -13% | 0 | 0 | — |
case-08 | pass→pass | 11,733 | 4,238 | -64% | 1 | 1 | 0% | 2,058 | 1,684 | -18% | 0 | 0 | — |
case-09 | fail→pass | 11,471 | 5,202 | -55% | 1 | 1 | 0% | 2,212 | 1,829 | -17% | 0 | 0 | — |
case-10 | pass→pass | 10,175 | 7,190 | -29% | 1 | 1 | 0% | 1,707 | 2,008 | +18% | 0 | 0 | — |
case-11 | pass→pass | 9,951 | 3,648 | -63% | 1 | 1 | 0% | 1,959 | 1,506 | -23% | 0 | 0 | — |
case-12 | pass→pass | 8,916 | 3,428 | -62% | 1 | 1 | 0% | 1,807 | 1,458 | -19% | 0 | 0 | — |
case-13 | fail→pass | 10,145 | 2,599 | -74% | 1 | 1 | 0% | 1,714 | 1,245 | -27% | 0 | 0 | — |
case-14 | pass→pass | 13,914 | 5,685 | -59% | 1 | 1 | 0% | 2,260 | 1,828 | -19% | 0 | 0 | — |
case-15 | pass→pass | 11,514 | 8,217 | -29% | 1 | 1 | 0% | 1,993 | 2,151 | +8% | 0 | 0 | — |
case-16 | pass→pass | 11,302 | 8,495 | -25% | 1 | 1 | 0% | 2,006 | 2,413 | +20% | 0 | 0 | — |
case-17 | pass→pass | 9,739 | 3,554 | -64% | 1 | 1 | 0% | 1,622 | 1,398 | -14% | 0 | 0 | — |
case-18 | pass→pass | 9,893 | 3,805 | -62% | 1 | 1 | 0% | 1,537 | 1,484 | -3% | 0 | 0 | — |
case-19 | fail→fail | 13,004 | 6,190 | -52% | 1 | 1 | 0% | 2,310 | 1,834 | -21% | 0 | 0 | — |
case-20 | fail→pass | 9,522 | 4,389 | -54% | 1 | 1 | 0% | 1,582 | 1,533 | -3% | 0 | 0 | — |
case-21 | fail→pass | 10,245 | 4,535 | -56% | 1 | 1 | 0% | 1,630 | 1,546 | -5% | 0 | 0 | — |
case-22 | pass→pass | 12,167 | 3,714 | -69% | 1 | 1 | 0% | 1,951 | 1,451 | -26% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +27 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/2/2026 | +41% |
| gemini-3.6-flash | verified | 7/23/2026 | +50% |
Other measured skills in the registry, with their headline benchmark lift.