DEV.co
Open-Source Testing · VerifyTests

Verify

Verify is a C# snapshot testing library that serializes test results to files and compares them on subsequent runs, automating assertions for complex objects and documents. It integrates with major .NET test frameworks (NUnit, xUnit, MSTest, Fixie, TUnit, Expecto) and provides workflow tools for accepting or rejecting snapshot changes.

Source: GitHub — github.com/VerifyTests/Verify
3.5k
GitHub stars
184
Forks
C#
Primary language
MIT
License (OSI-approved)

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
RepositoryVerifyTests/Verify
OwnerVerifyTests
Primary languageC#
LicenseMIT — OSI-approved
Stars3.5k
Forks184
Open issues5
Latest release31.21.0 (2026-07-06)
Last updated2026-07-08
Sourcehttps://github.com/VerifyTests/Verify

What Verify is

Verify captures test outputs as serialized snapshots (files matching test names), then performs file-based diffs on re-execution. It supports net462–net10 runtimes, offers integrations with ReSharper/Rider, diff tools, and terminal utilities, and uses MIT licensing. The project includes planned commercial licensing for official binary releases by commercial organizations starting August 2026.

Quickstart

Get the Verify source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/VerifyTests/Verify.gitcd Verify# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

Complex object and document assertion

Ideal for testing data models, API responses, and serialized documents where manual assertion construction is tedious or error-prone. Snapshot diffs catch unintended mutations.

Regression detection in document generation

Effective for validating HTML, PDF, XML, or JSON output where human review of diffs is more practical than hard-coded assertions.

Multi-framework test suite consolidation

Teams with NUnit, xUnit, MSTest, or mixed test frameworks can use a single assertion library, reducing cognitive overhead.

Implementation considerations

  • Requires ImplicitUsings enabled in C# project files; older projects must use full Verifier.Verify() namespace paths.
  • Snapshot file acceptance can be automated (via scripts, CLI tools, IDE plugins) or manual; choose a workflow that fits your code review process.
  • Supported runtimes range from net462 to net10; verify your target framework is listed before adoption.
  • Test framework selection is binding: NUnit, xUnit, MSTest, Fixie, TUnit, or Expecto; mismatched or custom frameworks require custom integration.
  • Snapshot diffs depend on installed diff tools (Beyond Compare, WinMerge, etc.); some CI/CD environments may lack GUI diff viewers, requiring terminal or programmatic acceptance.

When to avoid it — and what to weigh

  • Brittle snapshot-driven testing — If your team frequently has unplanned snapshot changes, you risk approving invalid snapshots by mistake or burning time on diff reviews. Snapshot testing requires discipline.
  • Strict, immutable test artifacts — Snapshot files stored in git require careful review workflows. Large binary snapshots or snapshots that change for formatting reasons (not logic) can clutter repositories.
  • Performance-critical test suites — Snapshot serialization and disk I/O add overhead; unsuitable if you need microsecond-level test performance or run thousands of tests in tight CI loops.
  • Non-.NET or legacy ecosystems — Verify is C#-only. No support for .NET Framework prior to net462 or non-Microsoft runtimes beyond .NET Core equivalents.

License & commercial use

MIT License (permissive). Source code remains open and free indefinitely. **Important caveat: Official binary releases will require a small subscription fee (from $10/month starting August 2026) for commercial organizations and government agencies.** Individuals, non-revenue organizations, CI, forks, and local development remain unaffected. Verify the license discussion (issue #1731) for clarification before commercial adoption.

**Caution.** While the source is MIT-licensed, the project maintainers have announced a commercial licensing model for official binary releases starting August 2026. Commercial organizations and government agencies using official NuGet packages will be asked to pay a subscription fee. Requires review of the official proposal and your organization's policies on open-source commercial licensing before production adoption. Building from source avoids the fee but introduces maintenance overhead.

DEV.co evaluation signals

Editorial assessment — not user reviews. Directional, with an explicit confidence level.

SignalAssessment
MaintenanceActive
DocumentationAdequate
License clarityNeeds review
Deployment complexityLow
DEV.co fitGood
Assessment confidenceHigh
Security considerations

Snapshot testing does not inherently introduce security risks, but snapshots stored in git can expose sensitive data (PII, credentials, API keys) if not filtered. Establish a policy to sanitize or exclude snapshots containing secrets. No mention of security audits or vulnerability disclosure process in provided data; check GitHub security advisories independently.

Alternatives to consider

Approved.NET (approval testing library)

Similar snapshot/approval workflow; smaller footprint; language-agnostic philosophy. Less IDE integration but simpler for teams avoiding heavy tooling.

FluentAssertions

Fluent assertion syntax with strong object comparison; no file-based snapshots but better for explicit, version-controlled assertions in code.

Shouldly

Readable assertion syntax with stack-trace enhancement; lightweight; no snapshot overhead; better for teams preferring inline, maintainable assertions.

Software development agency

Build on Verify with DEV.co software developers

Review the snapshot acceptance workflows, test framework compatibility, and upcoming commercial licensing terms before adopting Verify in production. Consider your team's code review discipline and CI/CD pipeline constraints.

Talk to DEV.co

Related open-source tools

Surfaced by semantic similarity across the DEV.co open-source index.

Related on DEV.co

Explore the category and the services that help you build with it.

Verify FAQ

Will the MIT license continue to apply after August 2026?
Yes. The source code remains MIT-licensed and open. Only official binary releases will require commercial licensing for commercial organizations. Building from source is unaffected.
Can I use Verify in a CI/CD pipeline without a GUI diff tool?
Yes. Multiple headless acceptance methods exist: dotnet CLI tool (Verify.Terminal), programmatic acceptance, clipboard mode, or manual file renaming. Verify which method fits your CI platform before adoption.
Does Verify work with .NET Framework?
Partially. Verify supports net462, net472, net48, and net481. Full-framework projects can use Verify, but SDK 9.0.301+ is required. Legacy .NET Framework 3.5 or 4.0 is not supported.
What happens if I approve a snapshot by mistake?
The next test run will fail if the output differs from the approved snapshot. Code review of snapshot diffs (via git diff) before committing is the recommended safeguard.

Software developers & web developers for hire

Adopting Verify is usually one piece of a larger software development effort. As a software development agency, DEV.co provides software development services and web development expertise — pairing senior software developers and web developers with your team to design, build, and operate open-source testing software in production.

Evaluate Verify for Your .NET Testing

Review the snapshot acceptance workflows, test framework compatibility, and upcoming commercial licensing terms before adopting Verify in production. Consider your team's code review discipline and CI/CD pipeline constraints.