logo

Simulación versus trozo versus espía

Imitar

Los simulacros son los objetos que almacenan llamadas a métodos. Se refiere a los contenedores dinámicos para las dependencias utilizadas en las pruebas. Se utiliza para registrar y verificar la interacción entre las clases de Java. Un simulacro se conoce como la versión más potente y flexible de los dobles de prueba. Usamos un método para burlarnos que se llama imitar() .

La función principal del uso de simulacros es que brinda control total sobre el comportamiento de los objetos simulados. Los objetos simulados se utilizan generalmente para verificación de comportamiento . El término comportamiento significa verificar los métodos y rutas correctos que se aplican a los objetos.

¿Qué es escritorio.ini?

Los simulacros se crean principalmente mediante el uso de una biblioteca o un marco simulado como Mockito, JMock y EasyMock. Se utiliza para probar un gran conjunto de pruebas donde los resguardos no son suficientes. Una de las funciones esenciales de simulacro es que podemos verificar cuántas veces se llama a un método determinado.

El siguiente fragmento de código muestra cómo utilizar simulacro().

 ToDoService doService = mock(ToDoService.class); 

Talón

Los resguardos son los objetos que contienen datos predefinidos y los utilizan para dar respuestas durante las pruebas. En otras palabras, un stub es un objeto que se parece a un objeto real con la cantidad mínima de métodos necesarios para una prueba. Los stubs se utilizan cuando no queremos utilizar objetos que den una respuesta con datos reales. Un trozo se conoce como la versión más ligera y la más estática de la prueba se duplica.

Las principales funciones de los stubs son:

  • Siempre devuelve la salida predefinida independientemente de la entrada.
  • Se puede utilizar para parecerse a los objetos de la base de datos.
  • Los resguardos se utilizan para reducir las complejidades que ocurren durante la creación de objetos reales. Se utilizan principalmente para realizar verificación estatal .

Espiar

Los espías son conocidos como objetos parcialmente simulados . Significa que espía crea un objeto parcial o medio muñeco del objeto real al destruir o espiar los reales. En el espionaje, el objeto real permanece sin cambios y solo espiamos algunos métodos específicos del mismo. En otras palabras, tomamos el objeto existente (real) y reemplazar o espiar sólo algunos de sus métodos.

Los espías son útiles cuando tenemos una clase enorme llena de métodos y queremos burlarnos de ciertos métodos. En este escenario, deberíamos preferir utilizar espías en lugar de simulacros y talones. Llama al comportamiento del método real, si los métodos no están bloqueados.

En Mockito, el método spy() se utiliza para crear objetos espía. Nos permite llamar a los métodos normales del objeto real. El siguiente fragmento de código muestra cómo utilizar el método spy().

 List spyArrayList = spy(ArrayList.class); 

Diferencia entre trozo y simulacro

Parámetros Talón Imitar
Fuente de datos La fuente de datos de los resguardos está codificada. Por lo general, está estrechamente acoplado al conjunto de pruebas. Los datos sobre simulacros se configuran mediante pruebas.
Creado por Los resguardos suelen estar escritos a mano y algunos se generan mediante herramientas. Los simulacros generalmente se crean utilizando bibliotecas de terceros, como Mockito, JMock y WireMock.
Uso Los stubs se utilizan principalmente para conjuntos de pruebas simples. Los simulacros se utilizan principalmente para grandes conjuntos de pruebas.
Interfaz gráfica de usuario (GUI) Los stubs no tienen una GUI. Los simulacros tienen una GUI.

A continuación se presentan algunas diferencias entre el simulacro y el espía:

Parámetros Imitar Espiar
Uso Los simulacros se utilizan para crear objetos totalmente simulados o ficticios. Se utiliza principalmente en grandes conjuntos de pruebas. Los espías se utilizan para crear objetos parciales o medio simulados. Al igual que los simulacros, los espías también se utilizan en grandes conjuntos de pruebas.
Comportamiento por defecto Cuando se utilizan objetos simulados, el comportamiento predeterminado de los métodos (cuando no están bloqueados) es no hacer nada (no realiza nada). Cuando se utilizan objetos espía, el comportamiento predeterminado de los métodos (cuando no están bloqueados) es el comportamiento del método real.

En nuestros tutoriales anteriores, analizamos algunos ejemplos de ataques, burlas y espionaje. Para comprender mejor la diferencia entre atacar, burlarse y espiar, consulte los ejemplos.