It is an easy job for a manual tester to assert whether a test step has passed/failed from the outcome. However, in automation testing, we need to script the assertion point wherever it is required. If you have written scripts without assertions, then your automation test scripts don't add any value to your testing. The reason is after test automation execution, we need a confirmation that which all steps are passed and which all failed. So that, you can share feedback to your team confidently. In this blog article, we have listed the most widely used Java Assertions Libraries.
Truth makes your test assertions and failure messages more readable. Similar to AssertJ, it natively supports many JDK and Guava types, and it is extensible to others. Truth is owned and maintained by the Guava team. It is used in the majority of the tests in Google’s own codebase. Truth assertions are made with chained method calls, so IDEs can suggest the assertions appropriate for a given object.
AssertJ is a java library providing a rich set of assertions, truly helpful error messages, improves test code readability and is designed to be super easy to use within your favorite IDE. AssertJ's assertions are super easy to use: just type assertThat followed by the actual value in parentheses and a dot, then any Java IDE will show you all assertions available for the type of the object. No more confusion about the order of "expected" and "actual" value.
A simple assertion and validation library for Java which makes it possible to use your favorite hamcrest-matchers to express pre- and post-conditions in your code. Use the global default policy to signal logical violations in your code or optionally specify your own handling.
datasource-assert provides assertion API for DataSource to validate query executions. The assertion API is used for assertion methods such as assertEquals in JUnit and TestNG. Also, it comes with support for assertThat in AssertJ and Hamcrest.
Hamcrest is a framework for writing matcher objects allowing ‘match’ rules to be defined declaratively. There are a number of situations where matchers are invaluble, such as UI validation, or data filtering, but it is in the area of writing flexible tests that matchers are most commonly used. This tutorial shows you how to use Hamcrest for unit testing.