Mockito is a popular mocking framework for Java. But, before we start, we have some different artifacts to choose from.
In this quick tutorial, we'll explore the difference between mockito-core and mockito-all. Afterward, we'll be able to choose the right one.
The mockito-core artifact is Mockito's main artifact. Specifically, it contains both the API and the implementation of the library.
We can obtain the artifact by adding the dependency to our pom.xml:
<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>3.3.3</version> </dependency>
At this point, we can already start using Mockito.
Of course, mockito-core has some dependencies like hamcrest and objenesis that Maven downloads separately, but mockito-all is an out-dated dependency that bundles Mockito as well as its required dependencies.
To verify this, let's look inside the mockito-all.jar to see the packages it contains:
mockito-all.jar |-- org | |-- hamcrest | |-- mockito | |-- objenesis
The latest GA version of mockito-all is a 1.x version released in 2014. Newer versions of Mockito don't release mockito-all anymore.
The maintainers released this dependency as a simplification. Developers were supposed to use this if they don't have a build tool with dependency management.
As we explored above, mockito-core is the main artifact of Mockito. Newer versions don't release mockito-all anymore. Henceforth, we should only use mockito-core.