{"id":1925,"date":"2023-11-22T14:28:37","date_gmt":"2023-11-22T17:28:37","guid":{"rendered":"https:\/\/stackcodelab.com\/blog\/?p=1925"},"modified":"2023-12-03T11:45:24","modified_gmt":"2023-12-03T14:45:24","slug":"pruebas-unitarias-en-c","status":"publish","type":"post","link":"https:\/\/stackcodelab.com\/blog\/pruebas-unitarias-en-c\/","title":{"rendered":"Pruebas Unitarias en C#"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Las pruebas unitarias son una parte fundamental del desarrollo de software que se centra en evaluar el funcionamiento individual de componentes a nivel de unidad, como funciones, m\u00e9todos o clases. El objetivo principal de las pruebas unitarias es asegurar que cada componente del c\u00f3digo funcione correctamente de manera aislada antes de integrarlo en el sistema completo. Esto ayuda a identificar y corregir errores temprano en el ciclo de desarrollo, lo que a su vez mejora la calidad del software y facilita el mantenimiento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, se describen los conceptos clave relacionados con las pruebas unitarias en C#:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Bibliotecas de Pruebas Unitarias:<\/strong> En C#, existen varias bibliotecas de pruebas unitarias populares, como NUnit, MSTest y xUnit. Estas bibliotecas proporcionan herramientas y estructuras para escribir, organizar y ejecutar pruebas unitarias de manera eficiente.<\/li>\n\n\n\n<li><strong>Aserciones:<\/strong> Las aserciones son declaraciones que verifican si un resultado es el esperado. En las pruebas unitarias, se utilizan aserciones para afirmar que el comportamiento de una unidad de c\u00f3digo (por ejemplo, una funci\u00f3n) es correcto. Si una aserci\u00f3n falla, se considera una prueba fallida.<\/li>\n\n\n\n<li><strong>Fixtures:<\/strong> Los fixtures son conjuntos de pruebas que comparten un contexto com\u00fan. Permiten establecer un estado inicial, realizar pruebas y limpiar despu\u00e9s de las pruebas. Los fixtures son \u00fatiles cuando se necesitan pruebas que dependen de un estado espec\u00edfico.<\/li>\n\n\n\n<li><strong>Mocks y Stub:<\/strong> En las pruebas unitarias, es com\u00fan simular objetos o comportamientos que no se pueden o no se deben utilizar en un entorno de prueba. Los mocks y stubs son objetos falsos utilizados para aislar el componente bajo prueba.<\/li>\n\n\n\n<li><strong>Cobertura de C\u00f3digo:<\/strong> La cobertura de c\u00f3digo es una m\u00e9trica que indica qu\u00e9 porcentaje del c\u00f3digo fuente se ha ejecutado durante las pruebas. Es \u00fatil para evaluar la calidad de las pruebas unitarias y asegurarse de que se ha probado adecuadamente todo el c\u00f3digo.<\/li>\n\n\n\n<li><strong>Test Driven Development (TDD):<\/strong> Es una metodolog\u00eda de desarrollo que se basa en escribir pruebas unitarias antes de escribir el c\u00f3digo real. Esto promueve un enfoque centrado en las pruebas y ayuda a garantizar que el c\u00f3digo cumpla con los requisitos especificados.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><a>Ejemplo de prueba unitaria en C# utilizando NUnit:<\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>using NUnit.Framework;\r\n\r\npublic class Calculator\r\n{\r\n    public int Add(int a, int b)\r\n    {\r\n        return a + b;\r\n    }\r\n}\r\n\r\n&#91;TestFixture]\r\npublic class CalculatorTests\r\n{\r\n    &#91;Test]\r\n    public void Add_WhenGivenTwoNumbers_ReturnsSum()\r\n    {\r\n        \/\/ Arrange\r\n        var calculator = new Calculator();\r\n\r\n        \/\/ Act\r\n        int result = calculator.Add(3, 5);\r\n\r\n        \/\/ Assert\r\n        Assert.AreEqual(8, result);\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este ejemplo, hemos creado una clase <code>Calculator<\/code> con un m\u00e9todo <code>Add<\/code>. Luego, hemos escrito una prueba unitaria utilizando NUnit que verifica si el m\u00e9todo <code>Add<\/code> funciona correctamente al sumar dos n\u00fameros.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las pruebas unitarias son esenciales para garantizar la calidad del software y facilitar el mantenimiento continuo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a><strong>Ejemplo: Escritura de Pruebas Unitarias con NUnit:<\/strong><\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed tienes un ejemplo de c\u00f3mo crear pruebas unitarias para una clase de ejemplo utilizando el marco de pruebas NUnit en C#.:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que tenemos una clase <code>Calculator<\/code> con m\u00e9todos para realizar operaciones matem\u00e1ticas simples. Queremos escribir pruebas unitarias para asegurarnos de que estos m\u00e9todos funcionen correctamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primero, necesitar\u00e1s instalar la biblioteca NUnit a trav\u00e9s de NuGet en tu proyecto. Puedes hacerlo utilizando el Administrador de paquetes NuGet en Visual Studio o mediante la l\u00ednea de comandos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luego, puedes crear un proyecto de pruebas unitarias en tu soluci\u00f3n de Visual Studio y escribir las pruebas unitarias. Aseg\u00farate de que el proyecto de pruebas tenga una referencia a la biblioteca NUnit.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using NUnit.Framework;\r\n\r\npublic class Calculator\r\n{\r\n    public int Add(int a, int b)\r\n    {\r\n        return a + b;\r\n    }\r\n\r\n    public int Subtract(int a, int b)\r\n    {\r\n        return a - b;\r\n    }\r\n}\r\n\r\n&#91;TestFixture]\r\npublic class CalculatorTests\r\n{\r\n    &#91;Test]\r\n    public void Add_WhenGivenTwoNumbers_ReturnsSum()\r\n    {\r\n        \/\/ Arrange\r\n        var calculator = new Calculator();\r\n\r\n        \/\/ Act\r\n        int result = calculator.Add(3, 5);\r\n\r\n        \/\/ Assert\r\n        Assert.AreEqual(8, result);\r\n    }\r\n\r\n    &#91;Test]\r\n    public void Subtract_WhenGivenTwoNumbers_ReturnsDifference()\r\n    {\r\n        \/\/ Arrange\r\n        var calculator = new Calculator();\r\n\r\n        \/\/ Act\r\n        int result = calculator.Subtract(10, 4);\r\n\r\n        \/\/ Assert\r\n        Assert.AreEqual(6, result);\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este ejemplo, hemos creado una clase <code>Calculator <\/code>con los m\u00e9todos <code>Add<\/code> y <code>Subtract<\/code>. Luego, hemos creado una clase de pruebas llamada <code>CalculatorTests<\/code>. Dentro de esta clase, hemos escrito dos pruebas unitarias utilizando los atributos <code>[Test]<\/code>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>En la primera prueba, llamada <code>Add_WhenGivenTwoNumbers_ReturnsSum<\/code>, estamos probando el m\u00e9todo <code>Add<\/code>.<\/li>\n\n\n\n<li>En la segunda prueba, llamada <code>Subtract_WhenGivenTwoNumbers_ReturnsDifference<\/code>, estamos probando el m\u00e9todo <code>Subtract<\/code>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Para ejecutar estas pruebas, puedes usar un corredor de pruebas compatible con NUnit, como el NUnit Test Runner en Visual Studio. Despu\u00e9s de ejecutar las pruebas, obtendr\u00e1s resultados que indican si las pruebas pasaron o fallaron. Esto te permitir\u00e1 verificar si tu c\u00f3digo funciona como se espera y si futuros cambios rompen alguna funcionalidad existente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Las pruebas unitarias son una parte fundamental del desarrollo de software que se centra en evaluar el funcionamiento individual de componentes a nivel de unidad, como funciones, m\u00e9todos o clases. El objetivo principal de las pruebas unitarias es asegurar que cada componente del c\u00f3digo funcione correctamente de manera aislada antes de integrarlo en el sistema [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2113,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[34],"tags":[],"class_list":["post-1925","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-y-otras-hierbas"],"uagb_featured_image_src":{"full":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Pruebas-Unitarias-en-C.jpg",1000,724,false],"thumbnail":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Pruebas-Unitarias-en-C-150x150.jpg",150,150,true],"medium":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Pruebas-Unitarias-en-C-300x217.jpg",300,217,true],"medium_large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Pruebas-Unitarias-en-C-768x556.jpg",768,556,true],"large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Pruebas-Unitarias-en-C.jpg",1000,724,false],"1536x1536":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Pruebas-Unitarias-en-C.jpg",1000,724,false],"2048x2048":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Pruebas-Unitarias-en-C.jpg",1000,724,false]},"uagb_author_info":{"display_name":"arquitecto","author_link":"https:\/\/stackcodelab.com\/blog\/author\/arquitecto\/"},"uagb_comment_info":0,"uagb_excerpt":"Las pruebas unitarias son una parte fundamental del desarrollo de software que se centra en evaluar el funcionamiento individual de componentes a nivel de unidad, como funciones, m\u00e9todos o clases. El objetivo principal de las pruebas unitarias es asegurar que cada componente del c\u00f3digo funcione correctamente de manera aislada antes de integrarlo en el sistema&hellip;","_links":{"self":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/1925","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/comments?post=1925"}],"version-history":[{"count":1,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/1925\/revisions"}],"predecessor-version":[{"id":1927,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/1925\/revisions\/1927"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media\/2113"}],"wp:attachment":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media?parent=1925"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/categories?post=1925"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/tags?post=1925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}