Mockito es un marco de prueba de código abierto que se utiliza para la prueba unitaria de aplicaciones Java. Desempeña un papel vital en el desarrollo de aplicaciones comprobables. Mockito se usa para simular interfaces para que se pueda agregar una funcionalidad ficticia a una interfaz simulada que se puede usar en pruebas unitarias. La prueba unitaria es un tipo de prueba de software en la que se prueban los componentes individuales del software. El objetivo principal de usar el marco Mockito es simplificar el desarrollo de una prueba burlándose de las dependencias externas y usándolas en el código de prueba. Y como resultado, Mockito proporciona un código de prueba más simple que es más fácil de entender, más legible y modificable. Mockito también se puede usar con otros marcos de prueba como JUnit y TestNG .
El marco JUnit es un marco de Java que también se utiliza para realizar pruebas. Ahora, JUnit se usa como estándar cuando es necesario realizar pruebas en Java. Entonces, en este artículo, discutiremos casos de prueba en una aplicación java usando Mockito y Junit .
Implementación paso a paso
Paso 1: Cree un proyecto Maven en su IDE de Java favorito (Aquí estamos usando IntelliJ IDEA )
Paso 2: cuando haya creado con éxito un proyecto maven, debe agregar algunas dependencias en su archivo pom.xml . Tenemos que agregar la siguiente dependencia en su archivo pom.xml.
La dependencia de Mockito es la siguiente :
XML
<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>2.0.2-beta</version> </dependency>
La dependencia de Junit es la siguiente :
XML
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> </dependency>
Implementación: a continuación se muestra el código completo para el archivo pom.xml
XML
<?xml version="1.0" encoding="UTF-8"?> <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> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>2.0.2-beta</version> </dependency> </dependencies> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> </project>
Paso 3: ahora debe crear una interfaz llamada TodoService y una clase llamada TodoServiceImpl.
Java
// Java Program to Illustrate TodoService File // Importing List class import java.util.List; // Interface public interface TodoService { // Creating a simple method retrieveTodos() public List<String> retrieveTodos(String user); }
Java
// Java Program to Illustrate TodoServiceImpl File // Importing required classes import java.util.ArrayList; import java.util.List; // Main class public class TodoServiceImpl { // Creating a reference of // TodoService interface private TodoService todoService; // Constructor public TodoServiceImpl(TodoService todoService) { // This keyword refers to same instance itself this.todoService = todoService; } // Method // Filtering the string public List<String> retrieveTodosRelatedToJava(String user) { List<String> filteredTodos = new ArrayList<String>(); List<String> todos = todoService.retrieveTodos(user); for (String todo : todos) { // Filtering the string that contains "Java" // keyword if (todo.contains("Java")) { filteredTodos.add(todo); } } return filteredTodos; } }
Paso 4: Ahora vamos a realizar pruebas unitarias para el método retrieveTodosRelatedToJava() que está presente dentro del archivo TodoServiceImpl.java . Para crear la clase de prueba, siga estos pasos. Al principio, haga clic derecho dentro del archivo TodoServiceImpl.java .
Luego haga clic en el botón Generar .
Luego haga clic en el botón Prueba.
Se mostrará una ventana emergente como esta. Aquí puede modificar el nombre de su clase de prueba. Además, verifique la configuración y el método con el que desea realizar la prueba unitaria.
Ejemplo:
Java
// Java Program to Illustrate TodoServiceImplMockTest File import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; // Importing required classes 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.runners.MockitoJUnitRunner; // MockitoJUnitRunner gives automatic validation // of framework usage, as well as an automatic initMocks() @RunWith(MockitoJUnitRunner.class) // Main class public class TodoServiceImplMockTest { TodoServiceImpl todoBusiness; // The Mockito.mock() method allows us to // create a mock object of a class or an interface @Mock TodoService todoServiceMock; // Methods annotated with the @Before // annotation are run before each test @Before public void setUp() { todoBusiness = new TodoServiceImpl(todoServiceMock); } // @Test // Tells the JUnit that the public void method // in which it is used can run as a test case @Test public void testRetrieveTodosRelatedToSpring_usingMock() { List<String> todos = Arrays.asList("Learn Spring", "Lear Java", "Learn Spring Boot"); when(todoServiceMock.retrieveTodos("User")) .thenReturn(todos); List<String> filteredTodos = todoBusiness.retrieveTodosRelatedToJava( "User"); assertEquals(1, filteredTodos.size()); } @Test public void testRetrieveTodosRelatedToSpring_withEmptyList_usingMock() { List<String> todos = Arrays.asList(); when(todoServiceMock.retrieveTodos("Dummy")) .thenReturn(todos); List<String> filteredTodos = todoBusiness.retrieveTodosRelatedToJava( "Dummy"); assertEquals(0, filteredTodos.size()); } }
Ahora ha escrito con éxito dos casos de prueba para su aplicación Java. Ahora, para ejecutar los casos de prueba, haga clic en el botón verde como se muestra en la imagen a continuación. Y puede ver que sus casos de prueba han sido aprobados.
Publicación traducida automáticamente
Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA