Capturing Human Intelligence - ApprovalTests is an open source assertion/verification library to aid unit testing.
It is compatible with most .Net unit testing frameworks (Nunit, MsTest, xUnit, MBUnit)
- What can it be used for?
- Video Tutorials
- Podcasts
- Docs
- Available on NuGet
- Examples
- Approved File Artifacts
- More Info
- Questions?
- Credits
Approval Tests can be used for verifying objects that require more than a simple assert. They also come prepackaged with utilities for some common .Net scenarios including:
- Dictionaries & Collections
- Long Strings
- Log Files
- Asp.Net
- Asp.Net Mvc
- Winforms
- Wpf
- Entity Framework
- Rdlc reports
You can watch a bunch of short videos on getting started and using ApprovalTests in .Net at YouTube
If you prefer auditory learning, you might enjoy the following podcast
[UseReporter(typeof(DiffReporter))]
[TestFixture]
public class SampleTest
{
[Test]
public void TestList()
{
var names = new[] {"Llewellyn", "James", "Dan", "Jason", "Katrina"};
Array.Sort(names);
Approvals.VerifyAll(names, "");
}
}
Will Produce a File
SampleTest.TestList.received.txt
[0] = Dan
[1] = James
[2] = Jason
[3] = Katrina
[4] = Llewellyn
Simply rename this to SampleTest.TestList.approved.txt and the test will now pass.
The *.approved.*
files must be checked into source your source control. ApprovalTests now ignores line endings by default (so you can remove *.approved.* binary
from your .gitattributes file if you added previously).
If you would like to verify line endings, simply add [assembly: IgnoreLineEndingsAttribute(false)]
to your AssemblyInfo.cs
Do not add *.received.*
files to your source control (they are transitory, and some SCMs like TFS will lock them or mark them read-only, which will break every dependent test).
ask on twitter: @LlewellynFalco or #ApprovalTests
This project exists thanks to all the people who contribute.
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]