Popularity
2.8
Growing
Activity
9.7
Stable
128
5
14

Programming language: C#
Tags: Testing    
Latest version: v6.21.0

Verify alternatives and similar packages

Based on the "Testing" category

Do you think we are missing an alternative of Verify or a related project?

Add another 'Testing' Package

README

<!-- GENERATED FILE - DO NOT EDIT This file was generated by MarkdownSnippets. Source File: /readme.source.md To change this file edit the source file and then run MarkdownSnippets. -->

Verify

Build status NuGet Status NuGet Status NuGet Status

Verify is a snapshot tool that simplifies the assertion of complex data models and documents.

Verify is called on the test result during the assertion phase. It serializes that result and stores it in a file that matches the test name. On the next test execution, the result is again serialized and compared to the existing file. The test will fail if the two snapshots do not match: either the change is unexpected, or the reference snapshot needs to be updated to the new result.

Support is available via a Tidelift Subscription.

Part of the .NET Foundation

<!-- toc -->

Contents

NuGet packages

Usage

Class being tested

Given a class to be tested:

<!-- snippet: ClassBeingTested -->

public static class ClassBeingTested
{
    public static Person FindPerson()
    {
        return new Person
        {
            Id = new Guid("ebced679-45d3-4653-8791-3d969c4a986c"),
            Title = Title.Mr,
            GivenNames = "John",
            FamilyName = "Smith",
            Spouse = "Jill",
            Children = new List<string>
            {
                "Sam",
                "Mary"
            },
            Address = new Address
            {
                Street = "4 Puddle Lane",
                Country = "USA"
            }
        };
    }
}

snippet source | anchor <!-- endSnippet -->

xUnit

Support for xUnit

<!-- snippet: SampleTestXunit -->

using static VerifyXunit.Verifier;

[UsesVerify]
public class Sample
{
    [Fact]
    public Task Test()
    {
        var person = ClassBeingTested.FindPerson();
        return Verify(person);
    }
}

snippet source | anchor <!-- endSnippet -->

NUnit

Support for NUnit

<!-- snippet: SampleTestNUnit -->

using static VerifyNUnit.Verifier;

[TestFixture]
public class Sample
{
    [Test]
    public Task Test()
    {
        var person = ClassBeingTested.FindPerson();
        return Verify(person);
    }
}

snippet source | anchor <!-- endSnippet -->

MSTest

Support for MSTest

<!-- snippet: SampleTestMSTest -->

[TestClass]
public class Sample :
    VerifyBase
{
    [TestMethod]
    public Task Test ()
    {
        var person = ClassBeingTested.FindPerson();
        return Verify(person);
    }
}

snippet source | anchor <!-- endSnippet -->

Initial Verification

When the test is initially run will fail with:

First verification. Sample.Test.verified.txt not found.
Verification command has been copied to the clipboard.

The clipboard will contain the following:

cmd /c move /Y "C:\Code\Sample\Sample.Test.received.txt" "C:\Code\Sample\Sample.Test.verified.txt"

Notes:

If a Diff Tool is detected it will display the diff:

InitialDiff

To verify the result:

  • Execute the command from the clipboard, or
  • Use the diff tool to accept the changes, or
  • Manually copy the text to the new file

Verified result

This will result in the Sample.Test.verified.txt being created:

<!-- snippet: Verify.Xunit.Tests/Snippets/Sample.Test.verified.txt -->

{
  GivenNames: 'John',
  FamilyName: 'Smith',
  Spouse: 'Jill',
  Address: {
    Street: '4 Puddle Lane',
    Country: 'USA'
  },
  Children: [
    'Sam',
    'Mary'
  ],
  Id: Guid_1
}

snippet source | anchor <!-- endSnippet -->

Subsequent Verification

If the implementation of ClassBeingTested changes:

<!-- snippet: ClassBeingTestedChanged -->

public static class ClassBeingTested
{
    public static Person FindPerson()
    {
        return new Person
        {
            Id = new Guid("ebced679-45d3-4653-8791-3d969c4a986c"),
            Title = Title.Mr,
            // Middle name added
            GivenNames = "John James",
            FamilyName = "Smith",
            Spouse = "Jill",
            Children = new List<string>
            {
                "Sam",
                "Mary"
            },
            Address = new Address
            {
                // Address changed
                Street = "64 Barnett Street",
                Country = "USA"
            }
        };
    }
}

snippet source | anchor <!-- endSnippet -->

And the test is re run it will fail with

Verification command has been copied to the clipboard.
Assert.Equal() Failure
                                  ↓ (pos 21)
Expected: ···\n  GivenNames: 'John',\n  FamilyName: 'Smith',\n  Spouse: 'Jill···
Actual:   ···\n  GivenNames: 'John James',\n  FamilyName: 'Smith',\n  Spouse:···
                                  ↑ (pos 21)

The clipboard will again contain the following:

cmd /c move /Y "C:\Code\Sample\Sample.Test.received.txt" "C:\Code\Sample\Sample.Test.verified.txt"

See also: Clipboard

The Diff Tool is will display the diff:

SecondDiff

The same approach can be used to verify the results and the change to Sample.Test.verified.txt is committed to source control along with the change to ClassBeingTested.

Received and Verified

  • All *.verified.* files should be committed to source control.
  • All *.received.* files should be excluded from source control.

Videos

Extensions

More Documentation

Alternatives

Projects/tools that may be a better alternative to Verify

Security contact information

To report a security vulnerability, use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.

Icon

Helmet designed by Leonidas Ikonomou from The Noun Project.