Start here. This is the direct spoken answer to practice first.
Why this question matters
A migration can compile and still lose data, block a large table, or break the older application instances that remain alive during deployment. The test target is the transition between versions, not only the final empty schema.
I would generate and review the migration SQL, then apply it to an isolated database using the same provider and a schema from the previous release. The fixture would contain representative existing data, including nulls, duplicates, long values, and relationships affected by the change. After migration I would verify schema shape, preserved data, constraints, and normal reads and writes through the new application. An in-memory provider cannot prove SQL syntax, locking, conversion, or provider-specific behavior.