PRUEBAS UNIDADES en Asp.Net: Tutorial completo
โก Resumen inteligente
Las pruebas unitarias de una aplicaciรณn ASP.NET en Visual Studio comienzan con un proyecto de prueba unitaria, se crea una referencia al proyecto de destino, se agregan los atributos [TestClass] y [TestMethod] de MSTest y se llaman los mรฉtodos Assert para demostrar que las clases se comportan segรบn lo previsto.
Las pruebas son un aspecto esencial de cualquier lenguaje de programaciรณn. Pruebas El desarrollo para aplicaciones ASP.NET es posible con la ayuda de Visual Studio.
Visual Studio se utiliza para crear cรณdigo de prueba. Tambiรฉn se utiliza para ejecutar el cรณdigo de prueba de una aplicaciรณn ASP.NET. De esta forma, resulta sencillo comprobar si hay errores en una aplicaciรณn ASP.NET. En Visual Studio, el mรณdulo de pruebas viene integrado. Se puede realizar una prueba en un proyecto ASP.NET de inmediato.
Introducciรณn a las pruebas para ASP.NET
El primer nivel de prueba de un proyecto ASP.NET son las pruebas unitarias. Estas pruebas evalรบan la funcionalidad de la aplicaciรณn y se realizan para garantizar que funcione segรบn lo previsto. En ASP.NET, la primera tarea consiste en crear un proyecto de prueba en Visual Studio. Este proyecto contendrรก el cรณdigo necesario para probar la aplicaciรณn.
Consideremos la siguiente pรกgina web. En la pรกgina, tenemos el mensaje โGuruSe muestra el mensaje "99 โ ASP.NET". Ahora bien, ยฟcรณmo podemos confirmar que se muestra el mensaje correcto al ejecutar un proyecto ASP.NET? Esto se logra agregando un proyecto de prueba a la soluciรณn ASP.NET (utilizada para desarrollar aplicaciones web). Este proyecto de prueba garantizarรก que se muestre el mensaje correcto al usuario.
Analicemos ahora con mรกs detalle cรณmo podemos trabajar en las pruebas en ASP.NET.
Crear un proyecto de prueba unitaria .NET
Antes de crear un proyecto de prueba, debemos realizar los siguientes pasos de alto nivel.
- Utilice nuestra 'Aplicaciรณn de demostraciรณn' utilizada en las secciones anteriores. Esta serรก nuestra aplicaciรณn que necesita ser probada.
- Agregaremos una nueva clase a la aplicaciรณn de demostraciรณn. Esta clase contendrรก una cadena llamada 'Guru99 โ ASP.NET.' Esta cadena se probarรก en nuestro proyecto de pruebas.
- Finalmente, crearemos un proyecto de prueba. Este se utiliza para probar la aplicaciรณn ASP.NET.
Sigamos entonces los pasos generales descritos anteriormente y veamos cรณmo implementar las pruebas.
Paso 1) Asegรบrese de que DemoApplication estรฉ abierta en Visual Studio.
Paso 2) Ahora agreguemos una nueva clase a la aplicaciรณn de demostraciรณn. Esta clase contendrรก una cadena llamada 'Guru99 โ ASP.NET.' Esta cadena se probarรก en nuestro proyecto de pruebas.
Siga el paso a continuaciรณn para agregar una nueva clase.
- En Visual Studio, haga clic con el botรณn derecho en โDemoApplicationโ en el Explorador de soluciones.
- Elija la opciรณn Agregar->Clase en el menรบ contextual.
Paso 3) En este paso,
- Asigne un nombre "Tutorial.cs" a la nueva clase.
- Haga clic en el botรณn "Agregar" para agregar el archivo a la aplicaciรณn de demostraciรณn.
Ahora, se agrega una nueva clase al archivo "DemoApplication".
Paso 4) Abra el nuevo archivo Tutorial.cs de โDemoApplicationโ. Agregue la cadena โGuru99 โ ASP.NET.โ
Para abrir el archivo, haga doble clic en el archivo Tutorial.cs en el Explorador de soluciones.
El archivo tendrรก algรบn cรณdigo predeterminado ya escrito. No se preocupe por ese cรณdigo, simplemente agregue la siguiente lรญnea de cรณdigo.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code Explicaciรณn:-
- La variable Nombre es de tipo cadena.
- Finalmente, en el constructor de la clase Tutorial, asigne el valor de la variable Name. El valor se asigna a โGuru99 โ ASP.NETโ
Paso 5) Ahora ve al archivo demo.aspx y agrega las lรญneas de cรณdigo para mostrar el texto โGuru99 โ ASP.NET.โ
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <% DemoApplication.Tutorial tp=new DemoApplication.Tutorial();%> <%=tp.Name%> </div> </form> </body> </html>
Code Explicaciรณn:-
- La primera lรญnea crea un objeto de la clase 'Tutorial'. Este es el primer paso al trabajar con clases y objetos. El nombre asignado al objeto es 'tp'.
- Finalmente llamamos 'tutorial.cs' desde el archivo demo.aspx. Muestra el valor de la variable Nombre.
Cuando ejecute el programa anterior en Visual Studio, obtendrรก el siguiente resultado.
Salida:-
En la salida, verรก el mensaje โGuru99 โ ASP.NETโ mostrado.
Paso 6) Ahora vamos a aรฑadir nuestro proyecto de prueba a la aplicaciรณn de demostraciรณn. Esto se hace con la ayuda de Visual Studio.
- Haga clic derecho en Soluciรณn โ Aplicaciรณn de demostraciรณn.
- En el menรบ contextual, elija la opciรณn 'Nuevo proyecto'.
Paso 7) El paso implica agregar el proyecto de prueba unitaria a la aplicaciรณn de demostraciรณn.
- Haga clic en el tipo de elemento como "Prueba" en el panel de la izquierda.
- Seleccione el elemento โProyecto de prueba unitariaโ de la lista que aparece en la parte central del cuadro de diรกlogo.
- Dรฉ un nombre al proyecto de prueba. En nuestro caso, el nombre dado es 'DemoTest'.
- Finalmente, haga clic en el botรณn "Aceptar".
Eventualmente verรก el proyecto DemoTest agregado al explorador de soluciones. Con esto, tambiรฉn puede ver que otros archivos como UnitTest1.cs, propiedades, etc. se generan de forma predeterminada.
Ejecutando el proyecto de prueba
El proyecto de prueba creado en la secciรณn anterior se utiliza para probar nuestra aplicaciรณn ASP.NET. En los siguientes pasos, veremos cรณmo ejecutar el proyecto de prueba.
- El primer paso serรญa agregar una referencia al proyecto ASP.NET. Este paso se realiza para que el proyecto de prueba tenga acceso al proyecto ASP.NET.
- Luego escribiremos nuestro cรณdigo de prueba.
- Finalmente, ejecutaremos la prueba utilizando Visual Studio.
Paso 1) Para probar nuestra aplicaciรณn de demostraciรณn, el primer proyecto de prueba debe hacer referencia a la aplicaciรณn de demostraciรณn. Agregue una referencia a la soluciรณn Demo.aspx.
- Haga clic derecho en el proyecto de prueba de demostraciรณn.
- Desde el menรบ elija la opciรณn Agregar->Referencia.
Paso 2) El siguiente paso es agregar una referencia a DemoApplication.
- Seleccione la opciรณn Proyectos del lado izquierdo del cuadro de diรกlogo.
- Haga clic en la casilla de verificaciรณn junto a DemoApplication
- Haga clic en el botรณn "Aceptar".
Esto permitirรก que un proyecto de prueba pruebe nuestra aplicaciรณn de demostraciรณn.
Paso 3) Ahora es el momento de aรฑadir el cรณdigo de prueba a nuestro proyecto de prueba.
- Para ello, haga doble clic en el archivo UnitTest1 (Visual Studio agrega automรกticamente el archivo UnitTest1 cuando se crea el proyecto de prueba) en el Explorador de soluciones.
- Este es el archivo que se ejecutarรก para probar el proyecto ASP.NET.
Verรก el cรณdigo que se muestra a continuaciรณn, agregado por Visual Studio, en el archivo UnitTest1.cs. Este es el cรณdigo bรกsico necesario para ejecutar el proyecto de prueba.
Paso 4) El siguiente paso es agregar el cรณdigo que se utiliza para probar la cadena โGuru99 โ ASP.NET.โ
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using DemoApplication; namespace DemoTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Tutorial tp = new Tutorial(); Assert.AreEqual(tp.Name,"Guru99 - ASP.Net"); } } }
- Crea un nuevo objeto llamado 'tp' del tipo Tutorial
- El mรฉtodo Assert.AreEqual se utiliza en .NET para comprobar si un valor es igual a algo. En nuestro caso, estamos comparando los valores de tp.Name con Guru99 โ ASP.NET.
Paso 5) Ahora vamos a ejecutar nuestro proyecto de prueba. Para ello, debemos ir a la opciรณn de menรบ Prueba->Ejecutar->Todas las pruebas.
Salida:-
Aparecerรก una ventana del Explorador de pruebas en Visual Studio. En ella se mostrarรก el resultado anterior y se indicarรก que se ejecutรณ una prueba exitosa en Visual Studio.
Atributos y aserciones de MSTest que utilizarรก
El MicrosoftEl espacio de nombres .VisualStudio.TestTools.UnitTesting incluye un pequeรฑo conjunto de atributos y aserciones que cubren la mayorรญa de las pruebas unitarias de ASP.NET. Aprenderlos primero facilita la lectura y el mantenimiento de las pruebas posteriores.
- [Clase de prueba] โ Marca la clase como un contenedor de pruebas. MSTest analiza las clases con este atributo en el momento del descubrimiento.
- [Mรฉtodo de prueba] โ Marca un mรฉtodo pรบblico sin parรกmetros como una prueba individual. El mรฉtodo devuelve void, Task o ValueTask.
- [InicializarPrueba] / [LimpiezaPrueba] โ Ejecรบtelos antes y despuรฉs de cada mรฉtodo de prueba. รselos para crear y eliminar configuraciones compartidas, como un repositorio simulado o un contexto en memoria.
- [Inicializar clase] / [Limpieza de clase] โ Se ejecutan una sola vez para toda la clase. Son รบtiles cuando la configuraciรณn es costosa, por ejemplo, al inicializar una base de datos de prueba.
- [Fila de datos] y [Mรฉtodo de prueba de datos] โ Proporcionar datos de entrada parametrizados para que un รบnico mรฉtodo de prueba cubra varios casos.
Dentro de cada mรฉtodo de prueba, la clase Assert verifica el resultado. Las llamadas comunes incluyen Assert.AreEqual para comparaciones de valores, Assert.IsTrue y Assert.IsFalse para booleanos, Assert.IsNull y Assert.IsNotNull para referencias, y Assert.ThrowsException para excepciones esperadas. Estructure cada prueba utilizando el patrรณn Arrange, Act, Assert para que la configuraciรณn, la invocaciรณn y la verificaciรณn permanezcan visualmente separadas. Este diseรฑo facilita la depuraciรณn de las pruebas fallidas, ya que la lรญnea que falla casi siempre es la รบnica instrucciรณn Assert en la parte inferior.
Comparaciรณn de MSTest, NUnit y xUnit para ASP.NET
Tres marcos de prueba dominan el ecosistema .NET. Cada uno se ejecuta dentro de Visual Studio y se integra con dotnet test, por lo que la diferencia radica principalmente en el estilo, el soporte de la comunidad y el comportamiento predeterminado.
- Prueba MST โ enviado por Microsoft y viene preinstalado con la plantilla de proyecto de prueba unitaria de Visual Studio utilizada anteriormente en este tutorial. Es la opciรณn predeterminada mรกs segura cuando un equipo es nuevo en las pruebas unitarias en el Microsoft asociaciรณn.
- NUnit โ el mรกs antiguo de los tres, originalmente portado desde JUnitOfrece un modelo de restricciones completo, pruebas parametrizadas mediante TestCase y TestCaseSource, y soporte avanzado para todas las versiones de .NET.
- xUnit.net โ Utilizado internamente por los equipos de ASP.NET Core y Entity Framework Core. Reemplaza el mรฉtodo SetUp con el constructor e IDisposable, fomenta el uso de una clase de prueba por comportamiento y utiliza [Fact] y [Theory] en lugar de [TestMethod].
Los tres marcos descubren las pruebas a travรฉs de atributos, las ejecutan a travรฉs del comando dotnet test y producen informes XML trx o xUnit que las canalizaciones de CI como Azure DevOps, GitHub Actions y Jenkins Puede consumirse directamente. Para un primer proyecto ASP.NET, usar MSTest simplifica la cadena de herramientas. Los equipos que buscan una mayor parametrizaciรณn o que ya usan ASP.NET Core suelen elegir xUnit por su coherencia con el framework con el que se construyรณ.
Mejores prรกcticas para pruebas unitarias de aplicaciones ASP.NET
Seguir un pequeรฑo conjunto de hรกbitos permite que un conjunto de herramientas sea rรกpido, fiable y รบtil durante toda la vida รบtil de un proyecto ASP.NET.
- Pruebe un comportamiento por cada mรฉtodo. Una prueba que afirma varias cosas sin relaciรณn entre sรญ falla por muchas razones y tarda mรกs en corregirse.
- Pruebas de nombres segรบn la intenciรณn. Un patrรณn como MethodUnderTest_Scenario_ExpectedResult hace que la salida del Explorador de pruebas sea una especificaciรณn legible de la clase.
- Aรญsle la unidad de los sistemas externos. Envuelva las llamadas a archivos, redes y bases de datos detrรกs de interfaces e incorpore objetos simulados o ficticios para que la prueba no acceda a la dependencia real.
- Realiza las pruebas rรกpidamente. El objetivo es que el conjunto completo de pruebas unitarias finalice en segundos. Las pruebas lentas se omiten, y las pruebas omitidas ocultan regresiones.
- Sigue el esquema Organizar, Actuar, Afirmar. Tres bloques cortos con lรญneas en blanco entre ellos indican la intenciรณn y facilitan la detecciรณn de lรญneas defectuosas.
- Ejecuta pruebas en cada commit. Integra las pruebas de .NET en una canalizaciรณn de CI para que una prueba fallida bloquee la fusiรณn en lugar de la distribuciรณn.ping a la producciรณn.
- Traccobertura de cรณdigo k, pero no la persigas. La cobertura pone de relieve caminos no explorados, pero un nรบmero elevado por sรญ solo no garantiza la calidad. Revmira quรฉ hacen realmente las lรญneas que faltan.
Aplicadas en conjunto, estas prรกcticas convierten el proyecto DemoTest creado anteriormente en la base de un conjunto de herramientas que detecta regresiones en cada actualizaciรณn, documenta el comportamiento para futuros desarrolladores y genera confianza al refactorizar una aplicaciรณn ASP.NET.


















