Pruebas unitarias con mockito y junit

Pruebas unitarias con

Actualmente la mayoría de los programadores usan TDD (Test Driven Development) para realizar pruebas unitarias.

Primero crearemos un proyecto Java

Vamos a hacerlo sin maven para que podáis aplicarlo a todo tipo de proyectos y necesitáis maven aquí pongo la dependencia.

<dependency>

    <groupId>org.mockito</groupId>

    <artifactId>mockito-all</artifactId>

    <version>1.9.5</version>

</dependency>

Hemos descargado la versión 1.9.5 de mockito desde aquí.

En nuestro proyecto añadiremos el jar al buil path

Vamos a Crear nuestras clases.

Esta clase será nuestro bean


Esta la que contendrá las validaciones e imprimirá los resultados


Y esta nuestra clase de TEST

import
static org.junit.Assert.assertEquals;

import
static org.mockito.Mockito.times;

import
static org.mockito.Mockito.verify;

import
static org.mockito.Mockito.when;

import org.junit.Before;

import org.junit.Test;

import org.mockito.InjectMocks;

import org.mockito.Mock;

import org.mockito.MockitoAnnotations;

public
class TestMockito {

     @InjectMocks

     private
final ComprobacionesMockito comprobacionesMockito = new ComprobacionesMockito();

    //Agregamos el mock a la clase

     @Mock

     private PruebaMockVo pruebaMockVo;    

     @Before

     public
void init() {

     // inicializamos los mocks

     MockitoAnnotations.initMocks(this);

     }    

     @Test

     public
void deberiaValidarEdadEImprimirDatos() {

         when(pruebaMockVo.getNombre()).thenReturn(“Amalakaky”);

         when(pruebaMockVo.getApellido1()).thenReturn(“aplellido1”);

         when(pruebaMockVo.getEdad()).thenReturn(18);

     final String saludo = comprobacionesMockito.validaEdad(pruebaMockVo);

         verify(pruebaMockVo, times(2)).getNombre();

         verify(pruebaMockVo, times(2)).getApellido1();

         verify(pruebaMockVo).getApellido2();

         verify(pruebaMockVo, times(2)).getEdad();

     assertEquals(saludo, “Amalakaky aplellido1 18”);

     }

     @Test

     public
void deberiaValidarEdadEImprimirDatosConApellidoMaterno() {

    

         when(pruebaMockVo.getNombre()).thenReturn(“Amalakaky”);

         when(pruebaMockVo.getApellido1()).thenReturn(“aplellido1”);

         when(pruebaMockVo.getApellido2()).thenReturn(“aplellido2”);

         when(pruebaMockVo.getEdad()).thenReturn(20);

     final String saludo = comprobacionesMockito.validaEdad(pruebaMockVo);

         verify(pruebaMockVo, times(2)).getNombre();

         verify(pruebaMockVo, times(2)).getApellido1();

         verify(pruebaMockVo, times(2)).getApellido2();

         verify(pruebaMockVo, times(2)).getEdad();

     assertEquals(saludo, “Amalakaky aplellido1 aplellido2 20”);

     }

     @Test

     public
void deberiaValidarEdadEImprimirDatosConEdadMenor() {

     when(pruebaMockVo.getNombre()).thenReturn(“Amalakaky”);

     when(pruebaMockVo.getApellido1()).thenReturn(“aplellido1”);

     when(pruebaMockVo.getApellido2()).thenReturn(“aplellido2”);

     when(pruebaMockVo.getEdad()).thenReturn(17);

     final String saludo = comprobacionesMockito.validaEdad(pruebaMockVo);

         

         verify(pruebaMockVo).getNombre();

         verify(pruebaMockVo).getApellido1();

         verify(pruebaMockVo).getEdad();

        

     assertEquals(saludo, “”);

     }

    

}

Al ejecutarla vemos los resultado las correctas las pinto por consola

Publicado en Java, TDD | Deja un comentario

Instalación de Jenkins, integración continua

Instalación de Jenkins, integración continua

Podemos ejecutar Jenkins de varias maneras.

Primeros nos descargamos el war de Jenkins desde aquí.

Antes de arrancar el servidor es necesario configurar un usuario y pass en el tomcat

<tomcat-users xmlns=”http://tomcat.apache.org/xml&#8221;

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance&#8221;

xsi:schemaLocation=”http://tomcat.apache.org/xml tomcat-users.xsd”

version=”1.0″>

<user username=”admin” password=”admin” roles=”admin-gui,manager-gui” />

</tomcat-users>

Si tenemos la versión no istalable arrancamos desde aquí

Luego arrancamos el servidor desde apache-tomcat-8.0.32\bin y ejecutamos “startup.bat”

Si instalamos desde Windows

Ahora nos vamos al manaller del tomcat http://localhost:8080/

Nos dirigimos al Manager App y seleccionamos el war a desplegar

Si os da problema al desplegar copiar el war C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps

Ahora después de desplegar arrancamos el portal desde aquí http://localhost:8080/jenkins/

Esto nos especifica en una ruta el pass del administrador

De las dos opciones que nos aparecen escogemos la primera

Luego configuramos la cuenta y ya tenemos el Jenkins configurado.

Según se indica en el libro de referencia “Jenkins, la Guía Definitiva”, la IC como proceso se debe ir adaptando en el grupo de trabajo pasando por distintas fases. Estas son:

  1. Sin servidor: Los productos se compilan en los equipos de los desarrolladores. Por cada nueva versión de código, se integran manualmente los cambios.
  2. Compilaciones nocturnas: El equipo dispone de un servidor que ejecuta compilaciones de código cada cierto tiempo, regularmente por la noche. Se realizan commits frecuentemente y si hay conflictos, el servidor notifica el error al día siguiente. Los errores, por tanto, se siguen posponiendo.
  3. Compilaciones nocturnas
    y test automáticos básicos: Aumenta la importancia de la IC y la automatización de test. El servidor realiza builds por cada commit realizado, por lo que se tiene acceso a los resultados al momento. Los builds incluyen compilación y ejecución y reporte de tests unitarios por lo que los errores pueden ser corregidos al momento.
  4. Dentro de las métricas: Se evalúa el código de forma automática para reportes de calidad del código y se crea a su vez la documentación de la API.
  5. Poniéndonos más serios con los tests: Los beneficios de la integración continua están estrechamente relacionados con técnicas solidas de testeo. En este punto prácticas como TDD son más comunes, resultando en una mayor confianza en los resultados de las builds automáticas. La aplicación no es solo compilada y testada, además, el servidor se encarga de desplegarla automáticamente sobre el servidor de la aplicación, para poder ejecutar tests más realistas sobre el rendimiento y la aplicación.
  6. Tests de aceptación automáticos y despliegue más automático: TDD de aceptación es practicado por el equipo, guiando los esfuerzos de desarrollo y proveyendo de un reporte de alto nivel del estado de la aplicación. Estos test automatizados usan herramientas de Behaviour-Driven Development y Acceptance-Test Driven Development para actuar como herramientas de comunicación y documentación, así como de testeo. Proporcionando resultados de las pruebas que personas que no sean los desarrolladores pueden entender. La aplicación es desplegada automáticamente sobre un servidor de test para que las personas del departamento de Calidad puedan testarla. El equipo de desarrollo es capaz de hacer rollbacks de las aplicaciones desplegadas por si algo falla.
  7. Despliegue continuo: La confianza en los test unitarios, de integración y aceptación es ahora tan grande que los equipos pueden aplicar el despliegue automático para enviar directamente los cambios a producción.
Publicado en Jenkins | Etiquetado | Deja un comentario

Spring 4 MVC Ejemplo Servicio Usando REST @RestControler

Spring 4 MVC Ejemplo Servicio Usando REST @RestControler

En primer lugar, vamos a enumerar las tecnologías que vamos a utilizar.

Como entorno de desarrollo utilizaremos el IDE de Sprimg STS.

1

 

<dependency>

<artifactId>jackson-databind</artifactId>

<groupId>com.fasterxml.jackson.core</groupId>

<version>2.7.3</version>

</dependency>

<dependency>

<artifactId>spring-context</artifactId>

<groupId>org.springframework</groupId>

<version>4.2.0.RELEASE</version>

</dependency>

 

Creamos un proyecto nuevo con el siguiente Témplate

2

3

Añadimos las dependencias a nuestro archivo pom.xml

4

Ahora vamos a crear el POJO

5

Creamos nuestra clase controlador:

6

@PathVariable Indica que este parámetro estará vinculada a la variable en la plantilla URI.

Lo más interesante a destacar aquí es que aquí estamos utilizando la anotación @RestController, que marca esta clase como un controlador en el que cada método devuelve un objeto de dominio / POJO en lugar de una vista. Quiere decir que no está usando la Vista, estamos enviando directamente el código HTML en respuesta, pero estamos enviando objeto convertido en formato comprensible. En nuestro caso, debido a la biblioteca de Jackson incluidos en la ruta de clase, el objeto del mensaje será convertida en formato JSON.

 

Creamos nuestra Clase de Configuración:

7

Aquí esta clase está proporcionando principalmente el componente de exploración y anotación.

Nota: no tenemos ninguna configuración de Vista, no necesitamos una en caso de REST.

Creamos nuestra clase de iniciación:

9

El resultado en el Chrome es el siguiente

10

 

 

 

Publicado en Spring | Deja un comentario

Configuración del STS ,Maven y Gradle en Windows 8.1

Retomando Spring

 

 

Contenido

Configuración de entorno en Windows 8    1

 

 

 

 

Configuración de entorno en Windows 8

 

Primero nos bajaremos el IDE STS

Segundo nos bajaremos las siguientes librerías Maven y Gradle para configurar las variables de entornos en Windows 8 o 8.1.

Descomprimimos los dos paquetes en C:\.

 

Ahora vamos a configurar las variables de entorno en Windows 8.1.

Crearemos las dos variables nuevas.

En el Path añadimos la ruta de donde están los bat.

 

Abrimos un cmd y comprobamos que las dos variables están correctas mvn – version y Gradle – version.

 

 

 

Publicado en Spring | Deja un comentario

Auto Scan componentes con Spring

Spring componente Auto scaning

Normalmente se declaran todos los beans o los componentes en el archivo de configuración XML, de modo que el contenedor de Spring puede detectar y registrar sus beans o componentes. Seguir leyendo

Minientrada | Publicado el por | Etiquetado | Deja un comentario

Parte 3 Recursos, menús y diálogos

Recursos, menús y diálogos

Recursos

Pieza clave en Android

  • Permite su gestión de forma cómoda y eficiente
  • Contextualizados a las características del dispositivo y preferencias del usuario
    • Idioma
    • Tamaño de pantalla
    • Botones disponibles
  • Variable R
    • Autogenerada
    • Reúne todos los identificadores
    • Permite identificar a todos los recursos
  • AssetsManager
Minientrada | Publicado el por | Deja un comentario

Parte 2 Layouts y controles gráficos

Layouts y controles gráficos

Interfaz de usuario

Activity

Pantalla que se muestra al usuario. Las actividades se componen de vistas

View

Controles o widgets de la interfaz de usuario. Elemento básico de la interfaz que permite la interacción con el usuario Seguir leyendo

Minientrada | Publicado el por | Deja un comentario

Parte 1 Actividades e Intenciones

Actividades e Intenciones

Primero vamos con la actividad de android.

Las aplicaciones en Android solo tienen un primer plano que ocupa toda la pantalla

Las aplicaciones están formadas por actividades

En un momento dado una actividad pasa al primer plano y se coloca por encima de otra formado una pila de actividades Seguir leyendo

Minientrada | Publicado el por | Deja un comentario

Interceptores Struts 2 Parte 1

Interceptores Struts 2 Parte 1

Aquí verá cómo los interceptores se invocan tanto antes como después de la ejecución de la acción y cómo los resultados se prestan al usuario. Vamos a entender esto con la ayuda del siguiente diagrama

Seguir leyendo

Minientrada | Publicado el por | Deja un comentario

Introducción Framework Struts 2

Introducción Framework Struts 2

Struts 2 Framework
Un Framework que trata de automatizar las tareas comunes y proporciona una plataforma para los usuarios para crear aplicaciones rápidamente.

Struts 2 implementa el modelo de diseño (MVC) Modelo-Vista-Controlador.
En Struts 2, el modelo, la vista y el controlador son ejecutados por el actión, resultado y
FilterDispatcher respectivamente. Seguir leyendo

Minientrada | Publicado el por | Deja un comentario