📄️ JUnit 3
JUnit 3 was the dominant testing framework for Java for many years, but it has several limitations compared to modern alternatives.
📄️ JUnit 4
JUnit 4 introduced annotations and removed the need to extend TestCase, which was a major improvement over JUnit 3.
📄️ Hamcrest
Hamcrest is a framework for writing matcher objects that can be combined to create flexible expressions of intent.
📄️ Spring MockMvc
Spring MockMvc has traditionally used Hamcrest matchers for assertions, which required mixing different assertion styles and was less discoverable.
📄️ Old Java versions
Java 13 introduced text blocks (multi-line strings) as a preview feature, finalized in Java 15.