Articulo de referencia

PruebaNG

TestNG es un marco de pruebas para el lenguaje de programación Java creado por Cedric_Beust e inspirado en JUnit y NUnit . El objetivo de diseño de TestNG es cubrir una gama más...

TestNG es un marco de pruebas para el lenguaje de programación Java creado por Cedric_Beust e inspirado en JUnit y NUnit . El objetivo de diseño de TestNG es cubrir una gama más amplia de categorías de pruebas: unitarias, funcionales, de extremo a extremo, de integración, etc., con funcionalidades más potentes y fáciles de usar.

Características

Las características principales de TestNG incluyen:

  1. Soporte de anotación.
  2. Soporte para pruebas parametrizadas/basadas en datos (con @DataProviderconfiguración XML y/o XML).
  3. Soporte para múltiples instancias de la misma clase de prueba (con @Factory)
  4. Modelo de ejecución flexible. TestNG puede ejecutarse mediante Ant a través de build.xml (con o sin un conjunto de pruebas definido) o mediante un complemento de IDE con resultados visuales. No hay una TestSuiteclase, mientras que los conjuntos de pruebas, los grupos y las pruebas seleccionadas para ejecutarse se definen y configuran mediante archivos XML.
  5. Pruebas concurrentes: ejecute pruebas en grupos de subprocesos de tamaño arbitrario con varias políticas disponibles (todos los métodos en su propio subproceso, un subproceso por clase de prueba, etc.) y pruebe si el código es seguro para múltiples subprocesos.
  6. Incorpora BeanShell para una mayor flexibilidad.
  7. Funciones JDK predeterminadas para tiempo de ejecución y registro (sin dependencias).
  8. Métodos dependientes para pruebas de servidores de aplicaciones. [ Aclaración necesaria ]
  9. Pruebas distribuidas: permite la distribución de pruebas en máquinas esclavas.


Proveedor de datos

Un proveedor de datos en TestNG es un método en una clase de prueba, que proporciona una matriz de valores reales variados a los métodos de prueba dependientes.

Ejemplo:

	//Este método proporcionará datos a cualquier método de prueba que declare que su proveedor de datos se llama "provider1". 
@DataProvider ( name = "provider1" ) public Object [][] createData1 () { return new Object [][] { { "Cedric" , new Integer ( 36 ) }, { "Anne" , new Integer ( 37 ) } }; }	  
	   
		    
			    
			    
		
	

	// Este método de prueba declara que sus datos deben ser suministrados por el proveedor de datos llamado "provider1". 
@Test ( dataProvider = " provider1" ) public void verificarData1 ( String n1 , Integer n2 ) { System . println ( n1 + " " + n2 ); }	  
	      
		    
	

	// Un proveedor de datos que devuelve un iterador de matrices de parámetros. 
@DataProvider ( name = "provider2" ) public Iterator < Object []> createData () { return new MyIterator (...); }	  
	   
		  
		

	// Un proveedor de datos con un argumento del tipo java.lang.reflect.Method. 
// Es particularmente útil cuando varios métodos de prueba usan el mismo // proveedor y desea que devuelva valores diferentes dependiendo de // qué método de prueba está sirviendo. @DataProvider ( name = "provider3" ) public Object [][] createData ( Method m ) { System . out . println ( m . getName ()); return new Object [][] { new Object [] { "Cedric" } }; }	
	
	
	  
	    
		 
		         
	

El tipo devuelto de un proveedor de datos puede ser uno de los dos tipos siguientes:

  • Una matriz de objetos ( Object[][]) donde el tamaño de la primera dimensión es el número de veces que se invocará el método de prueba y el tamaño de la segunda dimensión contiene una matriz de objetos que deben ser compatibles con los tipos de parámetros del método de prueba.
  • Un Iterator<Object[]>. La única diferencia con Object[][]es que un iterador le permite crear sus datos de prueba de forma diferida. TestNG invocará el iterador y luego el método de prueba con los parámetros devueltos por este iterador uno por uno. Esto es particularmente útil si tiene muchos conjuntos de parámetros para pasar al método y no desea crearlos todos por adelantado.

Soporte de herramientas

TestNG es compatible, de manera predeterminada o mediante complementos, con cada uno de los tres IDE principales de Java: Eclipse , IntelliJ IDEA y NetBeans . También incluye una tarea personalizada para Apache Ant y es compatible con el sistema de compilación Maven . El servidor de integración continua Hudson tiene compatibilidad integrada con TestNG y puede realizar un seguimiento y graficar los resultados de las pruebas a lo largo del tiempo. La mayoría de las herramientas de cobertura de código Java , como Cobertura , funcionan a la perfección con TestNG.

Nota: La compatibilidad de TestNG con Eclipse solo está incorporada en Eclipse Marketplace para las versiones de Eclipse hasta 2018-09 (4.9). Para versiones posteriores de Eclipse, TestNG debe instalarse manualmente según las instrucciones del sitio de TestNG. [3]

Informes

TestNG genera informes de pruebas en formatos HTML y XML. La salida XML se puede transformar mediante la tarea JUnitReport de Ant [4] para generar informes similares a los obtenidos al utilizar JUnit. Desde la versión 4.6, TestNG también proporciona una API de generación de informes [5] que permite utilizar generadores de informes de terceros, como ReportNG, [6] PDFngreport [7] y TestNG-XSLT, [8] .

Comparación con JUnit

TestNG tiene una rivalidad de larga data con otra herramienta de prueba JUnit . Cada marco tiene diferencias y respectivas ventajas. Las discusiones de Stack Overflow reflejan esta controversia. [9] [10] [11]

Anotaciones

En JUnit 5, los métodos @BeforeAll y @AfterAll deben declararse como estáticos en la mayoría de las circunstancias. [12] TestNG no tiene esta restricción.

TestNG incluye cuatro pares de anotaciones de configuración y desmontaje adicionales para la suite de pruebas y los grupos: @BeforeSuite, @AfterSuite, @BeforeTest, @AfterTest, @BeforeGroup y @AfterGroup, @BeforeMethod y @AfterMethod. TestNG también ofrece soporte para automatizar las pruebas de una aplicación mediante Selenium.

Pruebas parametrizadas

Las pruebas parametrizadas se implementan en ambas herramientas, pero de formas bastante diferentes.

TestNG tiene dos formas de proporcionar valores de parámetros variables a un método de prueba: configurando testng.xml y definiendo un método @DataProvider . [13]

En JUnit 5, la anotación @ParameterizedTest permite realizar pruebas parametrizadas. Esta anotación se combina con otra anotación que declara la fuente de los argumentos parametrizados, como @ValueSource o @EnumSource . El uso de @ArgumentsSource permite al usuario implementar una prueba más dinámica ArgumentsProvider. [14] En JUnit 4, @RunWith y @Parameters se utilizan para facilitar las pruebas parametrizadas, donde el método @Parameters tiene que devolver un List[]con los valores parametrizados, que se introducirán en el constructor de la clase de prueba.

Conclusión

A menudo, los usuarios prefieren determinadas características de un framework u otro. JUnit es más popular y suele incluirse con los IDE principales de forma predeterminada. TestNG se destaca por sus opciones de configuración adicionales y su capacidad para distintos tipos de pruebas. Cuál es más adecuado depende del contexto de uso y los requisitos.

Véase también

Referencias

  1. ^ | Página de lanzamientos del proyecto en GitHub
  2. ^ "Versión 2.0 de la licencia de Apache". Enero de 2004. Archivado desde el original el 21 de diciembre de 2013.
  3. ^ "TestNG para Eclipse".
  4. ^ JUnitReport Archivado el 24 de febrero de 2010 en Wayback Machine
  5. ^ "Anuncio de TestNG 4.6". Archivado desde el original el 12 de diciembre de 2010. Consultado el 4 de marzo de 2010 .
  6. ^ Se lanzó la versión final de ReportNG 1.0
  7. ^ Informe PDF 1.0.0
  8. ^ Informes XSL de TestNG
  9. ^ "Junit frente a TestNG". stackoverflow.com.
  10. ^ "JUnit vs TestNG". stackoverflow.com. Archivado desde el original el 2 de febrero de 2014.
  11. ^ "¿Qué marco de UnitTest aprender para Java ahora?". stackoverflow.com.
  12. ^ "Pruebas de escritura - Anotaciones". junit.org .
  13. ^ "¿Qué es TestNG?". qacreators.com.
  14. ^ "Guía del usuario de JUnit 5". junit.org .


  • Página de inicio de TestNG
Obtenido de "https://es.wikipedia.org/w/index.php?title=TestNG&oldid=1206057792"