EqualsVerifier

General

Category
Free
Tag
TDD & BDD
License
Apache License, Version 2.0
Registered
Jan 28, 2017
Favorites
0
Link
https://github.com/jqno/equalsverifier
See also
TestNG
Spock
JsonUnit
ParcelCheck
JBehave

Additional

Language
Java
Version
N/A
Created
Mar 29, 2015
Updated
Jul 28, 2020
Owner
Jan Ouwens (jqno)
Contributors
Jan Ouwens (jqno)
Turbanov Andrey (turbanoff)
Michal Kordas (mkordas)
Stephan Schroevers (Stephan202)
Vincent Privat (don-vip)
dean-allen
Roman Ivanov (romani)
rnveach
Karl Heinz Marbaise (khmarbaise)
Nathan Perdijk (NRBPerdijk)
Nicolai Parlog (nicolaiparlog)
sullis
Evan Gilbert (eggilbert)
dependabot[bot]
Matt M. (9numbernine9)
Felix Sonntag (fsonntag)
William Palmer (willpdp)
dependabot-preview[bot]
Show all (19)19
Activity
Badge
Generate
Download
Source code

Show card

EqualsVerifier can be used in Java unit tests to verify whether the contract for the equals and hashCode methods in a class is met. The Maven coordinates are:

<dependency>
    <groupId>nl.jqno.equalsverifier</groupId>
    <artifactId>equalsverifier</artifactId>
    <version>3.4.1</version>
    <scope>test</scope>
</dependency>

Documentation

Please see the project's website.

Contribution

Pull requests are welcome! If you open one, please also register an issue or send a message to the Google Group, so we can discuss it.

Development

Build

To build EqualsVerifier, you need Maven. Just call mvn from the command-line, without any parameters, and you're done. Alternatively, you can use any IDE with Maven support.

Formatting

EqualsVerifier uses Google Java Format to format Java files. You can call it using mvn (without any parameters), which will also run the tests and all the other static analysis. Or run mvn com.coveo:fmt-maven-plugin:format to only run the formatter.

Project structure

src/

  • nl.jqno.equalsverifier External API
  • nl.jqno.equalsverifier Supporting classes for the external API that aren't used in client code directly
  • nl.jqno.equalsverifier.internal Classes internal to the operation of EqualsVerifier
  • nl.jqno.equalsverifier.internal.checkers Checkers that perform EqualsVerifier's actual verifications
  • nl.jqno.equalsverifier.internal.exceptions Internally used exceptions
  • nl.jqno.equalsverifier.internal.prefabvalues Cache and factories for instances of all types
  • nl.jqno.equalsverifier.internal.reflection Helpers for reflection-based tasks
  • nl.jqno.equalsverifier.internal.util Various helpers

test/

  • javax.persistence Annotations used by integration tests
  • nl.jqno.equalsverifier Unit tests for specific subcomponents of EqualsVerifier
  • nl.jqno.equalsverifier.coverage Code coverage tests, which fail if coverage is less than 100%
  • nl.jqno.equalsverifier.integration.basic_contract Integration tests that cover the contract as stated in java.lang.Object's javadoc
  • nl.jqno.equalsverifier.integration.extended_contract Integration tests that cover specific corner cases in the Java language, and other essential points that are discussed in other sources, such as Effective Java, but not in the javadoc
  • nl.jqno.equalsverifier.integration.extra_features Integration tests that cover non-standard situations that EqualsVerifier supports
  • nl.jqno.equalsverifier.integration.inheritance Integration tests that cover inheritance in equality relations
  • nl.jqno.equalsverifier.integration.operational Integration tests that cover issues that don't pertain to equals or hashCode themselves, but to EqualsVerifier's operation
  • nl.jqno.equalsverifier.testhelpers Utility classes for use in tests
  • nl.jqno.equalsverifier.testhelpers.annotations Annotations used by unit tests and integration tests
  • nl.jqno.equalsverifier.testhelpers.annotations.casefolding More annotations which would clash with other annotations because of casing
  • nl.jqno.equalsverifier.testhelpers.types Various data classes for use in unit tests and integration tests
  • nl.jqno.equalsverifier.util Unit tests for the reflection helpers

lib/

  • equalsverifier-signedjar-test.jar A local Maven repository containing a signed jar, used to test potential ClassLoader issues Here's how to install a jar into it:
    mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file \
                             -Dfile=<path-to-file> -DgroupId=<myGroup> \
                             -DartifactId=<myArtifactId> -Dversion=<myVersion> \
                             -Dpackaging=<myPackaging> -DcreateChecksum=true \
                             -DlocalRepositoryPath=lib
    
    The signed jar itself can be found in this repo.



Disclaimer

Copyright 2009-2020 Jan Ouwens