.NET Verify Snapshot Testing
Manage Verify snapshot tests using the verify.tool dotnet local tool.
Discovery
To list all test files using Verify snapshots:
rg -l "Verifier\.Verify|UsesVerify|\.verified\." --type cs
To scope to a specific directory:
rg -l "Verifier\.Verify|UsesVerify|\.verified\." --type cs <path/to/test/directory>
Update Snapshots
To update snapshots after intentional code changes:
- Build the solution:
``bash dotnet build -p:WarningLevel=0 /clp:ErrorsOnly --verbosity minimal ``
- Run affected verify tests (they fail, generating
.received.files):
``bash dotnet test <test-project> --no-build --filter "FullyQualifiedName~<TestClass>" -v m ``
- Accept all new snapshots:
``bash dotnet verify accept -y ` To scope to a specific directory: `bash dotnet verify accept -y -w <path/to/test/directory> ``
- Re-run tests to confirm they pass:
``bash dotnet test <test-project> --no-build --filter "FullyQualifiedName~<TestClass>" -v m ``
File Conventions
ClassName.MethodName.verified.txt— accepted snapshot (committed to git)ClassName.MethodName.received.txt— latest test output (not committed, gitignored)- Parameterized tests:
ClassName.MethodName_param=value.verified.txt
Quick Reference
| Command | Purpose | |---|---| | dotnet verify accept -y | Accept all pending snapshots | | dotnet verify accept -y -w <dir> | Accept snapshots in specific directory | | rg -l "Verifier\.Verify\|UsesVerify\|\.verified\." --type cs | List all test files using Verify |