Part 3 of a series on C# incremental source generators focuses on proving cache correctness through testing. Using Roslyn's GeneratorDriver with trackIncrementalGeneratorSteps enabled, you can assert that pipeline steps report Cached or Unchanged after unrelated compilation changes. The post walks through a complete xUnit test setup, explains IncrementalStepRunReason values, and catalogs six anti-patterns that silently break caching: holding INamedTypeSymbol or SyntaxNode in models, using ImmutableArray without an equatable wrapper, building source strings inside transforms, using non-static lambdas, and combining raw CompilationProvider. Each anti-pattern is shown with a broken and fixed code example. The post also covers complementary snapshot testing with Verify.SourceGenerators to validate generated output correctness alongside the cache-hit test.