Meziantou.Framework.SnapshotTesting
1.0.2
Prefix Reserved
dotnet add package Meziantou.Framework.SnapshotTesting --version 1.0.2
NuGet\Install-Package Meziantou.Framework.SnapshotTesting -Version 1.0.2
<PackageReference Include="Meziantou.Framework.SnapshotTesting" Version="1.0.2" />
<PackageVersion Include="Meziantou.Framework.SnapshotTesting" Version="1.0.2" />
<PackageReference Include="Meziantou.Framework.SnapshotTesting" />
paket add Meziantou.Framework.SnapshotTesting --version 1.0.2
#r "nuget: Meziantou.Framework.SnapshotTesting, 1.0.2"
#:package Meziantou.Framework.SnapshotTesting@1.0.2
#addin nuget:?package=Meziantou.Framework.SnapshotTesting&version=1.0.2
#tool nuget:?package=Meziantou.Framework.SnapshotTesting&version=1.0.2
Meziantou.Framework.SnapshotTesting
Meziantou.Framework.SnapshotTesting validates serialized values against snapshot files stored on disk.
Basic usage
public sealed class SampleTests
{
[Fact]
public void ValidateUser()
{
var value = new { Name = "John", Age = 42 };
Snapshot.Validate(value);
}
}
For typed snapshots:
Snapshot.Validate(imageBytes, SnapshotType.Png);
Snapshot.Validate(svgText, SnapshotType.Svg);
File naming convention
Snapshots are stored in a __snapshots__ directory next to the test source file:
- expected snapshots:
*.verified.<extension> - mismatch output:
*.actual.<extension>
Example:
__snapshots__/SampleTest.verified.txt__snapshots__/SampleTest.actual.txt
Notes:
.actualfiles are always written when a snapshot does not match.- If a single assertion serializes multiple files, an index suffix (
_0,_1, ...) is appended. - If names are too long (or already end with
.verified/.actual), a stable hash is added.
Snapshot types
SnapshotType controls extension and optional metadata (MimeType, DisplayName). This can also affect the serializer.
Test context
Snapshot naming uses test context when available:
Snapshot.TestContext(AsyncLocal<SnapshotTestContext?>) can be set explicitly.- Xunit v3, TUnit, and NUnit display names are auto-detected to improve generated file names.
Customization
Use SnapshotSettings to customize behavior:
Serializers(SnapshotSerializerCollection)Comparers(SnapshotComparerCollection)SnapshotUpdateStrategy(Disallow,Overwrite,OverwriteWithoutFailure,MergeTool,MergeToolSync)AssertionExceptionCreatorandErrorMessageFormatterSnapshotPathStrategyfor full path generation
You can also set the default strategy using the SNAPSHOTTESTING_STRATEGY environment variable.
The value is case-insensitive and must match one of the SnapshotUpdateStrategy static property names (for example: DISALLOW, MergeTool, overwritewithoutfailure).
var settings = SnapshotSettings.Default with
{
SnapshotUpdateStrategy = SnapshotUpdateStrategy.Disallow,
};
Snapshot.Validate(value, SnapshotType.Default, settings);
The default serializers handle human-readable objects, byte[], and Stream.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- DiffEngine (>= 19.1.3)
- Meziantou.Framework.FullPath (>= 1.1.20)
- Meziantou.Framework.HumanReadableSerializer (>= 2.4.22)
- Meziantou.Framework.SnapshotTesting.Common (>= 1.0.0)
-
net8.0
- DiffEngine (>= 19.1.3)
- Meziantou.Framework.FullPath (>= 1.1.20)
- Meziantou.Framework.HumanReadableSerializer (>= 2.4.22)
- Meziantou.Framework.SnapshotTesting.Common (>= 1.0.0)
-
net9.0
- DiffEngine (>= 19.1.3)
- Meziantou.Framework.FullPath (>= 1.1.20)
- Meziantou.Framework.HumanReadableSerializer (>= 2.4.22)
- Meziantou.Framework.SnapshotTesting.Common (>= 1.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Meziantou.Framework.SnapshotTesting:
| Package | Downloads |
|---|---|
|
Meziantou.Framework.SnapshotTesting.ImageSharp
Enables verification of objects using file-based snapshots |
GitHub repositories
This package is not used by any popular GitHub repositories.