approvals / ApprovalTests.Java

ApprovalTest verification library for Java
Apache License 2.0
343 stars 75 forks source link
approval-test approval-testing java snapshot-testing verification-library

FormatJava Run tests Maven Central

Contents

ApprovalTests.Java

Capturing Human Intelligence - ApprovalTests is an open source assertion/verification library to aid unit testing.

It is compatible with JUnit 3, 4 & 5 and TestNG.

The jars can be used from JDK 1.8 on up until JDK 18.

What can it be used for?

Approval Tests can be used for verifying objects that require more than a simple assert. They also come prepackaged with utilities for some common java scenarios including

Documentation

Missing Documentation?

If there is documentation you wish existed, please add a page request to this issue.

Getting started

New Projects

The best way to get started is download and open one of the starter projects:

These are standard projects and can be imported into any editor or IDE.
They also all have CI with Github actions.

Docs

You might also want to check out the Getting Started Overview

Learning

A great way to learn Approval Tests if you are new to it is to try out the Koans.

How to get it

It's on Maven Central, search for 'approvaltests'.

Maven

If you're using Maven, add this to your pom file:

<dependency>
    <groupId>com.approvaltests</groupId>
    <artifactId>approvaltests</artifactId>
    <version>24.9.0</version>
    <scope>test</scope>
</dependency>

Gradle

dependencies {
    testImplementation("com.approvaltests:approvaltests:24.9.0")
}

or download the jars from maven central repository

Video Tutorials

You can watch a bunch of short videos on getting started and using ApprovalTests in Java at youtube.

Note: There are a lot of videos about ApprovalTests in .Net They are equally useful for understanding the concepts despite being in a different programming language.

Podcasts

If you prefer auditory learning, you might enjoy the following podcast (Note: Some of these talk about the .net side)

Examples

ApprovalTests eats it own dogfood, so the best examples are in the source code itself.

None the less, Here's a quick look

public class SampleArrayTest
{
  @Test
  public void testList()
  {
    String[] names = {"Llewellyn", "James", "Dan", "Jason", "Katrina"};
    Arrays.sort(names);
    Approvals.verifyAll("", names);
  }
}

snippet source | anchor

Will Produce a File SampleArrayTest.testList.received.txt

[0] = Dan
[1] = James
[2] = Jason
[3] = Katrina
[4] = Llewellyn

snippet source | anchor

Simply rename this to SampleTest.testList.approved.txt and the test will now pass.

Approved File Artifacts

The *.approved.* files must be checked into source your source control. This can be an issue with git as it will change the line endings. The suggested fix is to add *.approved.* binary to your .gitattributes

More Info

No Checked Exceptions Philosophy

Approval Tests follows the no checked exceptions" philosophy. That is, our API only throws runtime exceptions.

LICENSE

Apache 2.0 License

Questions?

twitter: @LlewellynFalco or #ApprovalTests

Developer notes

The suggested way to contribute to ApprovalTests is to pair with Llewellyn
However, if you are set on forking please read these notes