{"id":1845,"date":"2024-03-16T09:34:36","date_gmt":"2024-03-16T08:34:36","guid":{"rendered":"https:\/\/ittester.sk\/sin-categorizar\/testng-anotaciones\/"},"modified":"2024-07-11T09:43:31","modified_gmt":"2024-07-11T07:43:31","slug":"testng-anotaciones","status":"publish","type":"post","link":"https:\/\/ittester.sk\/es\/sin-categorizar\/tutorial-testng\/testng-anotaciones\/","title":{"rendered":"Anotaciones TestNG"},"content":{"rendered":"\n<p>En este tutorial, estudiaremos todas las anotaciones de TestNG junto con los distintos atributos admitidos. Una anotaci\u00f3n es una etiqueta o metadato que proporciona informaci\u00f3n adicional sobre una clase, interfaz o m\u00e9todo. TestNG utiliza estas anotaciones para proporcionar varias funciones que ayudan a construir un marco de pruebas s\u00f3lido. Llegados a este punto, echaremos un vistazo detallado a cada una de las anotaciones de TestNG y estudiaremos su sintaxis y uso.<\/p>\n\n<h2 class=\"wp-block-heading\">\u00cdndice<\/h2>\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-test\">@Test<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-beforesuite\">@BeforeSuite<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-aftersuite\">@AfterSuite<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-beforeclass\">@BeforeClass<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-afterclass\">@AfterClass<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-beforetest\">@BeforeTest<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-aftertest\">@AfterTest<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-dataprovider\">@DataProvider<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-parameter\">@Parameter<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-listener\">@Listener<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-factory\">@Factory<\/a><\/li><\/ul><\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-test\">@Prueba<\/h2>\n\n<p>@Test es la anotaci\u00f3n m\u00e1s importante y m\u00e1s utilizada de TestNG. Se utiliza para referirse a un m\u00e9todo como \u00abPrueba\u00bb. As\u00ed, cualquier m\u00e9todo sobre el que veamos la anotaci\u00f3n @Test se considera una prueba TestNG.<\/p>\n\n<p><strong>@Prueba<\/strong><\/p>\n\n<p><strong>public void muestraPrueba() {  <\/strong><\/p>\n\n<p><strong>  \/\/Cualquier l\u00f3gica de prueba<\/strong><\/p>\n\n<p><strong>  System.out.println(\u00ab\u00a1Hola! \u00a1Ha llegado ITtester.sk!\u00bb);  <\/strong><\/p>\n\n<p><strong>}<\/strong><\/p>\n\n<p>Veamos ahora algunos atributos importantes de las anotaciones @Test:<\/p>\n\n<p><strong>1. descripci\u00f3n<\/strong> &#8211; el atributo \u00abdescripci\u00f3n\u00bb se utiliza para proporcionar una descripci\u00f3n del m\u00e9todo de ensayo. Suele contener un resumen de una l\u00ednea de la prueba.<\/p>\n\n<p><strong>@Prueba(descripci\u00f3n = \u00abResumen de la prueba\u00bb)<\/strong><\/p>\n\n<p><strong>2. dataProvider<\/strong> &#8211; Este atributo ayuda a crear pruebas basadas en datos. Sirve para especificar el nombre del proveedor de datos para la prueba.<\/p>\n\n<p><strong>@Prueba(dataProvider = \u00abnombre del dataProvider\u00bb)<\/strong><\/p>\n\n<p><strong>3. Prioridad<\/strong> &#8211; Este atributo ayuda a priorizar los m\u00e9todos de prueba. La prioridad por defecto empieza en 0 y las pruebas se ejecutan en orden ascendente.<\/p>\n\n<p><strong>@Prueba(prioridad = 2)<\/strong><\/p>\n\n<p><strong>4. habilitado-Este<\/strong> atributo se utiliza para determinar si el m\u00e9todo de prueba se ejecutar\u00e1 o no con el conjunto o la clase.<\/p>\n\n<p><strong>@Prueba(activado = falso)<\/strong><\/p>\n\n<p><strong>5. grupos<\/strong> &#8211; sirve para determinar los grupos a los que pertenece el m\u00e9todo de ensayo.<\/p>\n\n<p><strong>@Prueba(grupos = { \u00abcordura\u00bb, \u00abregresi\u00f3n\u00bb })<\/strong><\/p>\n\n<p><strong>7. dependsOnMethods<\/strong> &#8211; Sirve para especificar los m\u00e9todos de los que depende el m\u00e9todo de prueba. El m\u00e9todo de prueba s\u00f3lo se ejecuta despu\u00e9s de que las pruebas dependientes se hayan ejecutado correctamente.<\/p>\n\n<p><strong>@Test(dependsOnMethods = { \u00abdependentTestMethodName\u00bb })<\/strong><\/p>\n\n<p><strong>8. dependsOnGroups<\/strong> &#8211; Sirve para especificar los grupos de los que depende el m\u00e9todo de prueba.<\/p>\n\n<p><strong>@Prueba(dependeDeGrupos = { \u00abgrupoDependiente\u00bb })<\/strong><\/p>\n\n<p><strong>9. alwaysRun<\/strong> &#8211; Si se establece en True, el m\u00e9todo de prueba se ejecutar\u00e1 aunque fallen los m\u00e9todos dependientes.<\/p>\n\n<p><strong>@Prueba(alwaysRun=Verdadero)<\/strong><\/p>\n\n<p><strong>10. timeOut<\/strong> &#8211; sirve para introducir el valor del tiempo de espera de la prueba (en milisegundos). Si la prueba dura m\u00e1s que el valor de tiempo de espera especificado, la prueba finaliza y se marca como fallida.<\/p>\n\n<p><strong>@Prueba (tiempo de espera = 500)<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-beforesuite\">@BeforeSuite<\/h2>\n\n<p>El m\u00e9todo anotado se ejecuta una sola vez antes de ejecutar todas las pruebas de este conjunto.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-aftersuite\">@AfterSuite<\/h2>\n\n<p>El m\u00e9todo anotado s\u00f3lo se ejecuta una vez despu\u00e9s de que se hayan ejecutado todas las pruebas de este conjunto.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-beforeclass\">@AntesClase<\/h2>\n\n<p>El m\u00e9todo anotado se ejecuta s\u00f3lo una vez antes de que se llame al primer m\u00e9todo de prueba de la clase actual.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-afterclass\">@AfterClass<\/h2>\n\n<p>El m\u00e9todo anotado s\u00f3lo se ejecuta una vez despu\u00e9s de que se hayan ejecutado todos los m\u00e9todos de prueba de la clase actual.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-beforetest\">@AntesDeLaPrueba<\/h2>\n\n<p><test>El m\u00e9todo anotado se ejecuta antes de que se ejecute cualquier m\u00e9todo de prueba perteneciente a clases dentro de la etiqueta.<\/test><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-aftertest\">@AfterTest<\/h2>\n\n<p><test>El m\u00e9todo anotado se ejecuta despu\u00e9s de que se hayan ejecutado todos los m\u00e9todos de prueba pertenecientes a las clases dentro de la etiqueta.<\/test><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-dataprovider\">@ProveedorDeDatos<\/h2>\n\n<p>Utilizando @DataProvider, podemos crear un marco basado en datos en el que los datos se pasan al m\u00e9todo de prueba apropiado y se ejecutan m\u00faltiples iteraciones de la prueba para diferentes valores de los datos de prueba pasados desde el m\u00e9todo @DataProvider. El m\u00e9todo anotado por la anotaci\u00f3n @DataProvider devuelve una matriz o un objeto 2D.<\/p>\n\n<p><strong>\/\/Proveedor de datos que devuelve una matriz 2D de 3*2<\/strong><\/p>\n\n<p><strong>@DataProvider(nombre = \u00abdataProvider1\u00bb)<\/strong><\/p>\n\n<p><strong>  public Object[][] dataProviderMethod1() {<\/strong><\/p>\n\n<p><strong>  return new Object[][] {{\u00abit\u00bb, \u00abtester\u00bb},{\u00abk1\u00bb, \u00abr1\u00bb},{\u00abk2\u00bb, \u00abr2\u00bb}};<\/strong><\/p>\n\n<p><strong>  }<\/strong><\/p>\n\n<p><strong>  \/\/Este m\u00e9todo est\u00e1 vinculado al proveedor de datos anterior<\/strong><\/p>\n\n<p><strong>  \/\/El caso de prueba se ejecutar\u00e1 3 veces con diferentes conjuntos de valores<\/strong><\/p>\n\n<p><strong>  @Prueba(dataProvider = \u00abdataProvider1\u00bb)<\/strong><\/p>\n\n<p><strong>  public void muestraPrueba(Cadena cadena1, Cadena cadena2) {<\/strong><\/p>\n\n<p><strong>  System.out.println(cadena1 + \u00bb \u00bb + cadena2);<\/strong><\/p>\n\n<p><strong>  }<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-parameter\">@Par\u00e1metro<\/h2>\n\n<p>La etiqueta @Par\u00e1metro se utiliza para pasar par\u00e1metros a los scripts de prueba. El valor de la etiqueta @Par\u00e1metro se puede pasar a trav\u00e9s del archivo testng.xml.<\/p>\n\n<p>Muestra del archivo testng.xml con la etiqueta de par\u00e1metros:<\/p>\n\n<p><strong>&lt;@Test (timeOut = 500) suite name=\u00bbsampleTestSuite\u00bb&gt;<\/strong><\/p>\n\n<p><strong>   &lt;test name=\u00bbsampleTest\u00bb&gt;   <\/strong><\/p>\n\n<p><strong>      &lt;parameter name=\u00bbsampleParamName\u00bb value=\u00bbsampleParamValue\u00bb\/&gt;<\/strong><\/p>\n\n<p><strong>      &lt;clases&gt;<\/strong><\/p>\n\n<p><strong>         &lt;class name=\u00bbArchivoDePrueba\u00bb \/&gt;<\/strong><\/p>\n\n<p><strong>      &lt;\/classes&gt;      <\/strong><\/p>\n\n<p><strong>   &lt;\/test&gt;<\/strong><\/p>\n\n<p><strong>&lt;\/suite&gt;<\/strong><\/p>\n\n<p>Script de prueba de ejemplo con la anotaci\u00f3n @Par\u00e1metro:<\/p>\n\n<p><strong>public clase TestArchivo {<\/strong><\/p>\n\n<p><strong> @Prueba<\/strong><\/p>\n\n<p><strong>  @Par\u00e1metros(\u00abnombreParamuestra\u00bb)<\/strong><\/p>\n\n<p><strong>  public void parameterTest(String paramValue) {<\/strong><\/p>\n\n<p><strong>  System.out.println(\u00abnombreParamuestra = \u00bb + nombreParamuestra);<\/strong><\/p>\n\n<p><strong>  }<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-listener\">@Oyente<\/h2>\n\n<p>TestNG nos proporciona diferentes tipos de escuchadores con los que podemos realizar una acci\u00f3n cuando se dispara un evento. Normalmente, los listeners de testNG se utilizan para configurar los informes y el registro.<\/p>\n\n<p><strong>@Escuchadores(NombrePaquete.NombreClaseAtenci\u00f3nPersonalizada.clase)<\/strong><\/p>\n\n<p><strong>public clase TestClass {  <\/strong><\/p>\n\n<p><strong>  WebDriver driver= new FirefoxDriver();@Test  <\/strong><\/p>\n\n<p><strong>  public void testMethod(){<\/strong><\/p>\n\n<p><strong>  \/\/l\u00f3gica de prueba<\/strong><\/p>\n\n<p><strong>  }<\/strong><\/p>\n\n<p><strong>}  <\/strong><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-factory\">@F\u00e1brica<\/h2>\n\n<p>La anotaci\u00f3n @Factory ayuda en la ejecuci\u00f3n din\u00e1mica de los casos de prueba. Utilizando la anotaci\u00f3n @Factory, podemos pasar par\u00e1metros a toda la clase de prueba mientras \u00e9sta se ejecuta. Los par\u00e1metros pasados pueden ser utilizados por uno o varios m\u00e9todos de prueba de esta clase.<\/p>\n\n<p>En el siguiente ejemplo, la clase TestFactory ejecuta un m\u00e9todo de prueba de la clase TestClass con distintos conjuntos de par\u00e1metros: \u00abk1\u00bb y \u00abk2\u00bb.<\/p>\n\n<p><strong>public clase TestClass{<\/strong><\/p>\n\n<p><strong>  privado String str;<\/strong><\/p>\n\n<p><strong>  \/\/Constructor<\/strong><\/p>\n\n<p><strong>  public TestClass(String str) {<\/strong><\/p>\n\n<p><strong>  este.cadena = cadena;<\/strong><\/p>\n\n<p><strong>  }<\/strong><\/p>\n\n<p><strong> @Prueba<\/strong><\/p>\n\n<p><strong>  public void TestMethod() {<\/strong><\/p>\n\n<p><strong>  System.out.println(cadena);<\/strong><\/p>\n\n<p><strong>  }<\/strong><\/p>\n\n<p><strong>}<\/strong><\/p>\n\n<p><strong>public clase TestFactory{<\/strong><\/p>\n\n<p><strong>  \/\/Debido a @Factory, el m\u00e9todo de prueba de la clase TestClass<\/strong><\/p>\n\n<p><strong>  \/\/se ejecutar\u00e1 dos veces con los datos \u00abk1\u00bb y \u00abk2\u00bb<\/strong><\/p>\n\n<p><strong>  @F\u00e1brica<\/strong><\/p>\n\n<p><strong>  public Object[] m\u00e9todof\u00e1brica() {<\/strong><\/p>\n\n<p><strong>  return new Object[] { new TestClass(\u00abK1\u00bb), new TestClass(\u00abk2\u00bb) };<\/strong><\/p>\n\n<p><strong>  }<\/strong><\/p>\n\n<p><strong>}<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TestNG utiliza anotaciones (etiquetas, metadatos) para proporcionar funciones que ayudan a construir un marco de pruebas s\u00f3lido.  <\/p>\n","protected":false},"author":8,"featured_media":1846,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[36],"tags":[],"class_list":["post-1845","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial-testng"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/comments?post=1845"}],"version-history":[{"count":2,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1845\/revisions"}],"predecessor-version":[{"id":2245,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1845\/revisions\/2245"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media\/1846"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media?parent=1845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/categories?post=1845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/tags?post=1845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}