Mockito never()

1. Overview

In unit testing, not only is it essential to verify that specific methods have been called, but it's equally crucial to ensure certain methods were never invoked. Mockito facilitates this through its never() method. Paired with the verify() method, never() confirms that a particular method on a mock object was not called. This tutorial dives into the intricacies of the never() method and demonstrates its application in Mockito.

2. Development Steps

1. Start by initializing a new Maven project.

2. Incorporate the necessary dependencies: JUnit 5 and Mockito.

3. Design a class with methods that may or may not be invoked.

4. Construct a test class for the previously designed class.

5. Use the verify() method in conjunction with never() to ensure certain methods were not called.

6. Formulate and run the test case.

7. Analyze the test results.

3. Dependencies (Mockito and JUnit 5)

<!-- JUnit 5 -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.10.0</version>
    <scope>test</scope>
</dependency>
<!-- Mockito -->
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>5.6.0</version>
    <scope>test</scope>
</dependency>

4. Code Program

// Step 3: Create the DataService class
class DataService {
    void fetchData() {
        // This method typically fetches data from a source
    }
    void processFetchedData() {
        // This method typically processes fetched data
    }
}
// Step 4 and 5: Develop a test class for DataService
import org.junit.jupiter.api.Test;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.never;
public class DataServiceTest {
    @Test
    public void fetchDataTest() {
        // Generate a mock of DataService
        DataService mockService = mock(DataService.class);
        // Call the fetchData method on the mock
        mockService.fetchData();
        // Use verify() combined with never() to ensure processFetchedData was not invoked
        verify(mockService, never()).processFetchedData();
    }
}

Output:

The fetchDataTest will successfully pass, showcasing that the never() method, combined with verify(), accurately ensured that the processFetchedData method wasn't invoked on the mocked DataService.

Code Explanation:

1. After smoothly integrating Mockito and JUnit 5 into our setup, we designed the DataService class. It houses two methods: fetchData() and processFetchedData().

2. Our test suite then employed Mockito's mock() method to generate a mock of the DataService.

3. We subsequently invoked the fetchData method on our mock object.

4. The focal point of this tutorial, the combined use of verify() and never(), was then employed. This duo verified that our processFetchedData method wasn't invoked. If this method had been called, our test would fail. Fortunately, it passed, reinforcing our expectations.

5. Conclusion

Mockito's never() method proves invaluable in scenarios where the non-invocation of specific methods is as crucial as their invocation. By pairing never() with verify(), developers can robustly confirm that certain actions didn't take place, further strengthening the reliability of their unit tests. Leveraging this tool can lead to more trustworthy, efficient, and well-validated software development practices.

Related 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

Comments