{"id":1799,"date":"2024-05-12T12:06:00","date_gmt":"2024-05-12T10:06:00","guid":{"rendered":"https:\/\/ittester.sk\/sin-categorizar\/asercion-suave-en-testng\/"},"modified":"2024-07-11T09:43:48","modified_gmt":"2024-07-11T07:43:48","slug":"asercion-suave-en-testng","status":"publish","type":"post","link":"https:\/\/ittester.sk\/es\/sin-categorizar\/tutorial-testng\/asercion-suave-en-testng\/","title":{"rendered":"Aserci\u00f3n suave en TestNG"},"content":{"rendered":"\n<p>Las afirmaciones de nuestros conjuntos de pruebas son necesarias para verificar el resultado real con el resultado esperado. La clase Assert proporcionada por TestNG ofrece una forma de aserci\u00f3n dura en la que, en cuanto falla la aserci\u00f3n, se detiene la ejecuci\u00f3n del m\u00e9todo de prueba y \u00e9ste se marca como fallido.<\/p>\n\n<p>Muchas veces, sin embargo, podemos requerir que el m\u00e9todo de prueba contin\u00fae su ejecuci\u00f3n despu\u00e9s de que falle la primera declaraci\u00f3n de aserci\u00f3n. Este requisito surge cuando tenemos varias aserciones en el m\u00e9todo de prueba o cuando queremos ejecutar alguna l\u00ednea de c\u00f3digo adicional despu\u00e9s de la declaraci\u00f3n de aserci\u00f3n. TestNG proporciona la clase SoftAssert para abordar estos casos.<\/p>\n\n<p><strong>SoftAssert softAssert = new SoftAssert();<\/strong><\/p>\n\n<p>Cuando utilizamos SoftAssert, si una aserci\u00f3n falla, no se lanza <strong>una assertionException<\/strong>, sino que se ejecutan todas las sentencias y, posteriormente, la prueba compara el resultado de todas las aserciones y marca el <a href=\"https:\/\/ittester.sk\/es\/pruebas-manuales\/caso-de-prueba\/\" title=\"\">caso de<\/a> prueba como correcto o incorrecto en funci\u00f3n del resultado de la aserci\u00f3n.<\/p>\n\n<p>En el siguiente fragmento de c\u00f3digo, utilizamos tres aserciones dentro del m\u00e9todo de prueba. Las dos primeras afirmaciones fallan deliberadamente, pero se realiza todo el m\u00e9todo de prueba. La \u00faltima sentencia <strong>softAssert.assertAll()<\/strong> es muy importante, ya que compara los resultados de todas las aserciones y marca la prueba como fallida en caso de que se produzca alg\u00fan fallo.<\/p>\n\n<p>PD: Si no utilizamos <strong>softAssert.assertAll()<\/strong>, el caso de prueba se marcar\u00e1 como correcto aunque falle la aserci\u00f3n.<\/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-vystup\">V\u00fdstup<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-vynimka-pri-zlyhani\">V\u00fdnimka pri zlyhan\u00ed<\/a><\/li><\/ul><\/div>\n<pre class=\"wp-block-code\"><code>@Test\npublic void softAssertionTest(){\n   \n   \/\/Creating softAssert object\n   SoftAssert softAssert = new SoftAssert();\n   \n   \/\/Assertion failing\n   softAssert.fail(\"Failing first assertion\");\n   System.out.println(\"Failing 1\");\n   \n   \/\/Assertion failing\n   softAssert.fail(\"Failing second assertion\");\n   System.out.println(\"Failing 2\");\n   \/\/Assertion passing\n   softAssert.assertEquals(1, 1, \"Passing third assertion\");\n   System.out.println(\"Passing 3\");\n   \/\/Collates the assertion results and marks test as pass or fail\n   softAssert.assertAll();\n}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-vystup\">Obtenido de<\/h2>\n\n<pre class=\"wp-block-code\"><code>Failing 1\nFailing 2\nPassing 3<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-vynimka-pri-zlyhani\">Excepci\u00f3n por fallo<\/h2>\n\n<pre class=\"wp-block-code\"><code>FAILED: softAssertionTest\njava.lang.AssertionError: The following asserts failed:\n Failing first assertion,\n Failing second assertion\n at org.testng.asserts.SoftAssert.assertAll(SoftAssert.java:43)\n.....<\/code><\/pre>\n\n<p>Aqu\u00ed podemos observar que la salida de la consola contiene todos los comandos de impresi\u00f3n, aunque fallen las aserciones. Tambi\u00e9n podemos ver en los informes de aserci\u00f3n que fallaron dos de las tres aserciones: Fall\u00f3 la primera aserci\u00f3n, Fall\u00f3 la segunda aserci\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Las afirmaciones de nuestros conjuntos de pruebas son necesarias para verificar el resultado real con el resultado esperado.<\/p>\n","protected":false},"author":8,"featured_media":1800,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[36],"tags":[],"class_list":["post-1799","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\/1799","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=1799"}],"version-history":[{"count":2,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1799\/revisions"}],"predecessor-version":[{"id":2248,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/posts\/1799\/revisions\/2248"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media\/1800"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/media?parent=1799"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/categories?post=1799"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/es\/wp-json\/wp\/v2\/tags?post=1799"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}