Proyecto para testing funcional, con maven

Reading time ~4 minutes

Escribo este post para tener siempre a mano un proyecto mínimo que sirva para empezar con las pruebas funcionales.

Ya hice un post con un ejemplo básico y sencillo pero con este, la idea es tener un proyecto que además esté mavenizado y que utilice testNG.

El proyecto estará mavenizado porque así tendremos una estructura de directorios organizada y nos va a permitir realizar tareas de una forma muy fácil como tener localizadas las dependencias que queramos (por ejemplo utilizaremos las de selenium), descargar plugins necesarios, etc

Por otro lado, haremos que descargue y utilice testNG puesto que es un framework que nos va a ayudar a organizar y gestionar nuestros tests en este proyecto java (lanzar sólo los tests que consideramos críticos, sólo los que tienen que ver con una necesidad, relanzar automáticamente los que han fallado…)

Todos los elementos que voy a utilizar: Java8, IntelliJ, Selenium y TestNG.

¡Empezamos!

Creamos entonces un proyecto java básico y lo hacemos con

1
maven-quickstart
que es un arquetipo o plantilla que sirve como base (generamos así la estructura de directorios del proyecto). Para ello:

  • (1) Primero, desde la linea de comandos hacemos:
1
$ mvn archetype:generate -DgroupId=com.examples -DartifactId=basic-testing-project -DarchetypeArtifactId=maven-archetype-quickstart

Con esto, se nos pregunta en dos ocasiones y debemos pulsar ENTER en ambas (marcadas en amarillo):

arquetipo

Esto nos genera una estructura como la siguiente:

estructura arquetipo maven

Como se puede ver, ya tenemos creado el pom.xml, que es el fichero XML que contiene toda la info necesaria para construir el proyecto.

  • (2) Importamos el proyecto en IntelliJ:
1
File > Open
  • (3) Si no tenemos Java8, ya va siendo hora de descargarlo:
1
File > Project Structure > Project > Project SDK

sdk java8

  • (4) Ahora vamos a modificar ese
    1
    
    pom.xml
    , añadiendo varias dependencias, las dos de selenium y la de testNG:
<dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>2.52.0</version>
</dependency>
<dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-server</artifactId>
      <version>2.52.0</version>
</dependency>
<dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.8</version>
      <scope>test</scope>
</dependency>

quedando así:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.examples</groupId>
  <artifactId>basic-testing-project</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>basic-testing-project</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>2.52.0</version>
    </dependency>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-server</artifactId>
      <version>2.52.0</version>
    </dependency>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.8</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
  • (5) Además, descargo chromedriver y lo incluyo en la carpeta src del proyecto.

  • (6) Y sólo nos queda ajustar la clase principal y la clase de test. Yo voy a implantar el page-factory que os comentaba en este post

La estructura final sería:

estructura final mvn

Y listo, sobre el test

1
testMethod
de la clase
1
TestExample
, click and run!! Ya podemos lanzar las pruebas.

PD. Podemos ir más allá y tener siempre la última versión de chrome driver descargada utilizando plugins para maven como este

De igual manera, sería modificar el

1
pom.xml
para que construya el proyecto como nosotros queramos antes de ponernos a lanzar pruebas. Interesante :)

Nota. Si podemos ir actualizando el

1
pom.xml
, mejor. Hay que revisar a menudo si hay versiones nuevas de Selenium y TestNG para ver si, al acogernos a una versión más nueva, todas las pruebas nos siguen funcionando. Además si han introducido mejoras o funcionalidades nuevas, probar a utilizarlas.

RESUMEN (Para la vagancia)

El proyecto completo Y las url necesarias para descargar chromedriver y SDK Java8

¡Saludos!

TestBash San Francisco 2018

![](http://emerrefe.github.io/qa-blog/images/TestBash_San_Francisco_2018_Best_Test_West_DOJO_EVENT_BANNER.png)Bueno bueno, os vengo a con...… Continue reading

TestNight JMeter 2018

Published on January 18, 2018

VLCTesting Valencia 2017

Published on December 11, 2017