Ejemplo de Testing con JUnit sobre un Controller

En la lección anterior, nos acerquemos mediante a la Introducción a las Pruebas Unitarias (Unit Testing) con JUnit y Mockito a las pruebas unitarias con JUnit, Mockito y Mocks.

En este artículo en concreto, vamos a realizar nuestro primer test en el que también analizaremos las tecnologías a usar en dicho testing. Para realizar este test, nos basaremos en el proyecto que creemos en el artículo: Creando un proyecto de Spring Boot. Y el contenido de dicho proyecto será únicamente una clase controller como la que realicemos en el ejercicio Recibiendo parámetros infinitos con @RequestParam (POST)

Aquí, os dejo el código del controlador sobre el que trabajaremos:

Creando la estructura de packages del testing

Bien, antes de nada, lo primero que vamos a realizar para comenzar es duplicar la estructura de packages del src/main/java a src/main/test. De tal manera que, ambas estructuras serán iguales. Vamos a ver un ejemplo paso a paso:

  • Para ello, primeramente, creamos los packages.
  • Podemos verificar que se a creado con el mismo formato, aunque aún el package de src/test/resources aún está vacío.
  • Creamos la clase dentro del package.
  • La clase de testing, la identificamos bajo el mismo nombre que la del package src/main/java pero, en este caso, acompañada de la coletilla Test al final.

Si desplegamos los packages que se encuentra en src/test/java, podemos ver como tenemos dos maneras de llegar al package com.restfull.corecontrollers. La primera, sería desplegando el package padre com.restfull.core.controllers. La segunda, desde el mismo package que tenemos fuera. Los dos caminos llegan a Roma, es decir, al mismo sitio, al IndexControllerTest que acabamos de crear hace unos segundos.

  • Bien, ya tenemos la clase creada, ahora, vamos a proceder a trabajar sobre ella para realizar el testing.

¿Qué tipo de test voy a realizar? ¿JUnit o JUnit con Mockito?

Si miramos el código del controlador, en este caso, podemos detectar que únicamente estamos trabajando con una clase, es decir, que no llamamos a ninguna clase dentro del controlador. Por lo tanto, como no necesitamos mockear nada, no necesitamos combinar JUnit con Mockito (la herramienta que nos permite realizar los Mocks). De modo que, trabajaremos únicamente con JUnit.

Etapas de un test unitario

Ya vimos anteriormente que un test unitario está subdivido en 3 fases:

1. Etapa de preparación (Arrange).

  • Mediante a @Test le indicamos que dicha clase es un Test.
  • Instanciamos a la clase Controlador.
  • Creamos un array para pasárselo posteriormente al controlador en la etapa de ejecución.
  • Y un String de resultado

2. Etapa de acción o de ejecución (Act).

3. Etapa de comprobación (Assert).

Si miramos el Controlador a testear, podemos ver que nos devuelve un String. Por tanto, lo que compararemos mediante a Asserts, serán Strings.

Ejecutando nuestro primer Test

Bien, ya tenemos nuestro primer test creado. Ahora solamente nos falta ejecutarlo. Para ello, podemos:

  • Ejecutar únicamente un test de una clase:
  • Ejecutar todos los test de una clase, en este caso, el resultado sería equivalente, ya que solo tenemos 1 test. Pero si tuviéramos más de uno, entonces sí que el resultado sería diferente.

Y aquí tenemos el resultado.

¿Pero que significa que un test este en verde? Resultados de un Test

Un Test puede tener diferentes resultados:

  • Color verde: el test se ha pasado satisfactoriamente.
  • Color azul: el test no ha pasado satisfactoriamente.
  • Color rojo: el test no ha pasado satisfactoriamente.

Instalando Coverage

Coverage, nos permite visualizar la cobertura de nuestro testing sobre una unidad de trabajo tanto en porcentajes, como de forma visual sobre la propia clase a testear. La visualización se realizará mediante a una combinación de colores, la cual nos informa sobre las distintas partes de código por las que hemos pasado.

Para instalarlo, vamos a Help >Eclipse Marketplace y buscamos coverage:

En el caso anterior, por ejemplo, hemos realizado únicamente 1 test. Si ejecutamos el test mediante a Coverage As> JUnit Test.

Si ejecutamos el test, podemos ver que, no hemos pasado por todos las partes de código.

Si nos fijamos en la pestaña de Coverage, podemos observar que podemos obtener informes al respeto a la cobertura que tenemos hasta este punto. Aunque una cosa a destacar al respeto, es que tener un 100 % de cobertura, no significa pasar por el 100% de los casos. Como norma general, llegar al 100% de los casos será imposible ya que existen muchísimos casos.

Pero lo correcto será analizar los casos que nosotros creemos que nos pueden generar errores y cubrirlos mediante a Test. Por ejemplo, ¿Qué pasaría si el Array no es nulo pero no contiene datos? ¿O si le pasaremos los datos correctos?

Para todo ello, hemos creado los siguientes test:

También, hemos tenido que modificar el controlador:

Y podemos comprobar que los resultados de los test, son todos satisfactorios.

También, podemos comprobar, que pese a que no hemos analizado el 100 % de los casos, como hemos pasado por todas las partes del código, nos muestra que tenemos un 100% de cobertura.

Bueno, eso es todo por hoy, en próximas clases, intentaremos acercamos al testing con Mockito. Un saludo javer@s!

26 comentarios

  1. I think the admin of this site is genuinely working hard for
    his website, because here every material is quality
    based data.

  2. I gotta favorite this internet site it seems invaluable very helpful.

    Review my web site :: Alpha Edge

  3. Have you ever thought about creating an e-book or guest authoring on other blogs?
    I have a blog based on the same subjects you discuss and would love to have you share some stories/information. I know my
    visitors would value your work. If you are even remotely interested, feel free to shoot me
    an e-mail.

  4. Someone necessarily lend a hand to make severely posts I might state.
    That is the very first time I frequented your web page and to this point?
    I surprised with the analysis you made to create this actual post incredible.
    Excellent task!

    Feel free to visit my web-site: Optimum Keto Ingredients

  5. Everyone loves what you guys are up too. Such clever
    work and coverage! Keep up the wonderful works guys I’ve incorporated you guys
    to blogroll.

  6. Have you ever thought about including a little bit more than just your articles?
    I mean, what you say is fundamental and everything.
    Nevertheless think of if you added some great visuals or videos to give your posts more, “pop”!
    Your content is excellent but with images and video clips, this website could undeniably be one of the most beneficial in its field.
    Superb blog!

  7. You ought to be a part of a contest for one of the highest quality sites on the
    net. I am going to recommend this web site!

  8. It’s really a cool and useful piece of info. I’m glad that you simply shared this useful info with us.
    Please stay us up to date like this. Thank you for sharing.

  9. It’s really a nice and useful piece of info. I’m glad that you simply shared this useful information with us.

    Please stay us informed like this. Thank
    you for sharing.

    Also visit my homepage Moscatcher Zapper

  10. Pretty component of content. I simply stumbled upon your weblog and in accession capital to
    assert that I get actually enjoyed account your
    blog posts. Anyway I will be subscribing in your feeds or even I
    success you access persistently rapidly.

    Stop by my site – NatureFused Cream

  11. These are really wonderful ideas in about blogging. You have touched some
    nice things here. Any way keep up wrinting.

    My web site Pure Keto Burn Pills (http://www.koan.at/UserProfile/tabid/61/userId/162098/Default.aspx)

  12. Greetings! Very helpful advice in this particular post!

    It is the little changes that will make the biggest
    changes. Thanks for sharing!

    Here is my site – Ketorol Keto

  13. I have been surfing online more than three hours today, yet I never found
    any interesting article like yours. It’s pretty worth enough for me.

    In my opinion, if all webmasters and bloggers made good
    content as you did, the internet will be a lot more useful than ever before.

  14. I always was interested in this topic and stock still am, regards for putting up.

    My site – SuperCharged IQ

  15. I love your blog.. very nice colors & theme. Did
    you create this website yourself or did you hire someone to do it for you?
    Plz respond as I’m looking to create my own blog and would like to know where u got this from.
    kudos

    Also visit my web blog … Alpha Edge Pills Reviews (agrocase.ru)

  16. Wow, wonderful weblog layout! How lengthy have you been running a blog for?
    you make running a blog glance easy. The overall glance of your
    web site is great, as well as The Skin Company content
    material![X-N-E-W-L-I-N-S-P-I-N-X]I just could not go away your website
    before suggesting that I extremely loved the usual info an individual
    provide in your visitors? Is gonna be back continuously in order
    to check out new posts.

  17. Some really excellent posts on this site, thank you for contribution.

    Feel free to visit my website – Libido Boost Pills Reviews

  18. I visited many blogs but the audio quality for audio songs existing at this website is
    truly superb.

    Feel free to visit my blog; Libido Boost Male Enhancement

  19. Having read this I thought it was very enlightening.

    I appreciate you finding the time and effort to put this short article together.
    I once again find myself personally spending a
    lot of time both reading and leaving comments. But so what, it was
    still worth it!

    Visit my site – Green Earth CBD Reviews

  20. It’s in point of fact a great and helpful piece
    of information. I’m satisfied that you simply shared this useful info with us.
    Please keep us informed like this. Thank you for sharing.

  21. These are really great ideas in on the topic of blogging.
    You have touched some fastidious things here.
    Any way keep up wrinting.

  22. Hi there all, here every person is sharing these experience, thus it’s
    fastidious to read this weblog, and I used to pay a quick visit this webpage all the time.

    Here is my webpage … Oracle Leaf Gold CBD Review

  23. Hello there, You’ve done an excellent job. I’ll certainly digg it
    and personally recommend to my friends. I’m
    sure they will be benefited from this web site.

  24. I think you have mentioned some very interesting details, appreciate it for the post.

    my site: Botanical Farms CBD Gummies

  25. I’m amazed, I have to admit. Rarely do I come across
    a blog that’s both equally educative and amusing, and let me tell you, you’ve
    hit the nail on the head. The problem is something that too few folks are speaking intelligently about.
    I’m very happy that I came across this in my hunt for something concerning this.

  26. I’d like to thank you for the efforts you’ve put in writing this blog.
    I really hope to view the same high-grade blog posts by you later on as well.

    In truth, your creative writing abilities
    has motivated me to get my own, personal blog now 😉

    Feel free to visit my webpage; Yoni Pur Review

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

La Ley 34/2002 nos obliga a avisarte de que usamos cookies propias y de terceros con objetivos estadísticos y de sesión y para mostrarte la 'publi' que nos da de comer. Tranquilo, este mensaje solo sale una vez. Más información

Java desde 0 comunica a los usuarios, a través de este aviso, que puede utilizar cookies cuando el usuario navega por las diferentes pantallas y páginas del sitio. Durante el uso de nuestra página Web usted acepta y autoriza expresamente el uso de cookies, de acuerdo con nuestra Política de Privacidad. Este sitio web utiliza las siguientes cookies propias: - Cookies de sesión, para garantizar que los usuarios que escriban comentarios en el blog sean humanos y no aplicaciones automatizadas. De esta forma se combate el spam. Este sitio web utiliza las siguientes cookies de terceros: - Google AdManager y AdSense: Utiliza cookies para mejorar la publicidad. Entre otros fines, suelen utilizarse para segmentarla según el contenido que sea relevante para los usuarios o su ubicación, mejorar los informes de rendimiento de las campañas y evitar mostrar anuncios que los usuarios ya hayan visto. Las cookies no contienen información personal identificable. Consulta cómo utiliza Google la información de sitios web o aplicaciones. y cómo bloquear determinados anuncios. - Google Analytics: Almacena cookies para poder elaborar estadísticas sobre el tráfico y volumen de visitas de esta web. Al utilizar este sitio web está consintiendo el tratamiento de información acerca de usted por Google. Por tanto, el ejercicio de cualquier derecho en este sentido deberá hacerlo comunicando directamente con Google. - Redes sociales: Cada red social utiliza sus propias cookies para que usted pueda pinchar en botones del tipo Me gusta o Compartir.

Cerrar