Mockito Tutorial

Welcome to the Java Mockito tutorial. On this page, you will find all the Mockito framework examples, methods, annotations, tutorials, and more.

What is Mockito? 

Mockito is a popular mocking framework used in Java to create and configure mock objects for unit tests. It's particularly helpful for writing tests for classes that have external dependencies (like databases, APIs, or other services). Instead of using these real dependencies in tests, which can be time-consuming and unpredictable, Mockito allows you to use mock objects in their place.

Mockito Annotations

Mockito Methods

Mockito mock()
Mockito spy()
Mockito when()
Mockito thenThrow()
Mockito verify()
Mockito times()
Mockito never()
Mockito any()
Mockito eq()
Mockito inOrder()
Mockito doReturn()
Mockito doThrow()
Mockito doAnswer()
Mockito timeout()
Mockito ArgumentMatchers
Mockito Mocking Void Methods
Mockito Mocking Final Classes and Methods
Mockito MCQ - Multiple Choice Questions and Answers

Advantages of Mockito

Isolation: It helps in isolating the unit of work from its dependencies, making unit tests more focused and faster. 

Clean Syntax: Mockito provides a very readable and expressive syntax. 

Flexibility: With Mockito, you can verify method calls, set up custom return values, and trigger specific behaviors like exceptions. 

No need for setup files: Unlike some other mocking frameworks, Mockito doesn't require XML or annotations to set up and configure mock objects. 

Integrated Argument Matchers: Mockito offers built-in matchers and the ability to create custom ones. 

Spies: Beyond traditional mocks, Mockito offers spies to partially mock objects (i.e., mix real and mocked methods).

Best Practices

Mock external systems and services: It's ideal for mocking databases, third-party services, etc., but avoid mocking everything.

Keep tests clean and readable: Mockito's syntax is expressive. Ensure your tests are easy to read and understand. 

Don't over-stub: Only stub what's necessary for a test to avoid unnecessary complexity. Always close resources: If you open resources (like streams) in your mock methods, ensure they're closed.