How to Write Test Cases in Java Application using Mockito and Junit?

Step-by-Step Implementation

Step 1: Create a Maven Project

Create a Maven project in your favorite Java IDE (Here we are using IntelliJ IDEA)

我这里先选择maven‑archetype‑quickstart

Step 2: Add Dependencies

When you have successfully created a Maven project you have to add some dependencies in your pom.xml file. We have to add the following dependency in your pom.xml file.

Dependency for Mockito is asfollows****:****

复制代码
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>5.18.0</version>
    <scope>test</scope>
</dependency>

Dependency for Junit is asfollows****:****

复制代码
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.8.2</version>
</dependency>

Below is the complete code for the pom.xml file

复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>mockito-demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>mockito-demo</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>5.18.0</version>
      <scope>test</scope>
    </dependency>



    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>


  </dependencies>
</project>

Step 3: Create the Service and Implementation Classes

Now you have to create one interface named as TodoService and one class named as TodoServiceImpl.

Example: Java Program to Illustrate TodoService File

复制代码
import java.util.List;

public interface TodoService {
    // Method to retrieve todos for a given user
    List<String> retrieveTodos(String user);
}

Example: Java Program to Illustrate TodoServiceImpl File

复制代码
import java.util.ArrayList;
import java.util.List;

public class TodoServiceImpl {

    private TodoService todoService;

    // Constructor
    public TodoServiceImpl(TodoService todoService) {
        this.todoService = todoService;
    }

    // Method to filter todos that contain the word "Java"
    public List<String> retrieveTodosRelatedToJava(String user) {
        List<String> filteredTodos = new ArrayList<>();
        List<String> todos = todoService.retrieveTodos(user);

        for (String todo : todos) {
            if (todo.contains("Java")) {
                filteredTodos.add(todo);
            }
        }
        return filteredTodos;
    }
}

Step 4: Write Unit Tests with Mockito and JUnit

Now we are going to perform unit testing for the retrieveTodosRelatedToJava() method that is present inside the TodoServiceImpl.java file. To create the test class follow these steps. At first Right-click inside the TodoServiceImpl.javafile.

Then click on the Generatebutton.

Then click on the Test button.

A pop-up window will be shown like this. Here you can modify your test class name. Also, check the setUpand the method that you want to perform unit testing.

****Example:****Java Program to Illustrate TodoServiceImplMockTest File

复制代码
package org.example;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;

import java.util.Arrays;
import java.util.List;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

// Runs tests with Mockito support
@RunWith(MockitoJUnitRunner.class)
public class TodoServiceImplMockTest {

    private TodoServiceImpl todoBusiness;

    // Mock object for TodoService
    @Mock
    private TodoService todoServiceMock;

    // Runs before each test
    @Before
    public void setUp() {
        todoBusiness = new TodoServiceImpl(todoServiceMock);
    }

    // Test case: when todos contain "Java"
    @Test
    public void testRetrieveTodosRelatedToJava_usingMock() {
        List<String> todos = Arrays.asList("Learn Spring", "Learn Java", "Learn Spring Boot");
        when(todoServiceMock.retrieveTodos("User")).thenReturn(todos);

        List<String> filteredTodos = todoBusiness.retrieveTodosRelatedToJava("User");
        assertEquals(1, filteredTodos.size()); // Only "Learn Java" matches
    }

    // Test case: when todos list is empty
    @Test
    public void testRetrieveTodosRelatedToJava_withEmptyList_usingMock() {
        List<String> todos = Arrays.asList();
        when(todoServiceMock.retrieveTodos("Dummy")).thenReturn(todos);

        List<String> filteredTodos = todoBusiness.retrieveTodosRelatedToJava("Dummy");
        assertEquals(0, filteredTodos.size());
    }
}

Step 5: Run the Tests

  • Right-click on the test class (TodoServiceImplMockTest).
  • Select Run 'TodoServiceImplMockTest'.
  • You will see both test cases pass (green check marks).

ps:How to Write Test Cases in Java Application using Mockito and Junit? - GeeksforGeeks

相关推荐
CarIise11 小时前
Spring 框架:多配置文件、开发方式与 IOC 注解
junit·maven·jar
努力努力再努力wz12 小时前
【Lua入门系列】从 Table 到元表与元方法:一文理解 Lua 的行为扩展机制
开发语言·junit·lua
麻瓜code1 天前
秒杀优化三连:Lua + 阻塞队列 + Redis Stream,响应从 3.4 秒到毫秒级
redis·junit·lua
努力努力再努力wz3 天前
【Lua 入门系列】从顺序执行到分支与循环:一文理解 Lua 控制结构、作用域与跳转规则
junit·单元测试·lua
努力努力再努力wz5 天前
【Lua入门系列】从动态类型到变量作用域:彻底理解 local、全局变量与跨文件访问
开发语言·junit·lua
aloha_7896 天前
Java 基础、集合、异常与 JUnit 5 速查
java·junit·sqlserver
极小狐17 天前
MR 里测试摘要空白、覆盖率不显示?JUnit 与覆盖率配置 9 步排查
数据库·ci/cd·junit·单元测试·mr·devops·代码覆盖率
Best-Wishes19 天前
科来网络分析系统(技术交流版)使用说明书
开发语言·junit·php
贾宝玉的玉宝贾19 天前
FreeSWITCH 简单图形化界面 70 - 监听/密语的lua脚本
开发语言·junit·lua·voip·freeswitch·sip·ippbx
企业数字化笔记20 天前
多租户系统从哪里开始设计?租户身份、数据隔离、权限与套餐的整体方案
java·spring boot·后端·junit