Pruebas en C# (.NET): revisión completa de frameworks y herramientas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Pruebas en C# (.NET): frameworks y herramientas



Las pruebas son una parte esencial del desarrollo profesional en la plataforma .NET. Una cobertura de código de calidad con pruebas reduce la cantidad de errores, simplifica la refactorización y aumenta la confianza en el producto. En el ecosistema de C# existen numerosos frameworks y utilidades maduros, cada uno de los cuales resuelve tareas específicas: desde pruebas unitarias hasta verificaciones de integración y pruebas de UI. En este artículo, analizaremos las herramientas principales, sus capacidades y ejemplos de uso.



Frameworks principales para pruebas unitarias



Las pruebas unitarias son la base de la pirámide de pruebas. En .NET Core / .NET 5+, el estándar de facto se ha convertido en xUnit.net, aunque NUnit y MSTest también se utilizan activamente.



xUnit.net

Un framework moderno, flexible y el más popular. Funciona según el principio de "hechos" (facts) y "teorías" (theories).

  • Hechos (Fact) — pruebas simples sin parámetros.
  • Teorías (Theory) — pruebas parametrizadas con datos de los atributos [InlineData] o [MemberData].
  • No requiere el atributo [TestClass] — cualquier clase pública puede contener pruebas.
using Xunit;

public class CalculatorTests{ [Fact] public void Add_ShouldReturnSum() { // Arrange var calc = new Calculator(); // Act var result = calc.Add(2, 3); // Assert Assert.Equal(5, result); }

[Theory] [InlineData(1, 2, 3)] [InlineData(-1, -1, -2)] public void Add_WithMultipleInputs_ShouldReturnCorrectSum(int a, int b, int expected) { var calc = new Calculator(); var result = calc.Add(a, b); Assert.Equal(expected, result); }}


NUnit

Un framework clásico con una rica historia. Se distingue por sus potentes atributos y soporte para parametrización.

  • Utiliza los atributos [Test], [TestCase], [SetUp].
  • Soporta la ejecución paralela de pruebas.
  • Es conveniente para escenarios complejos con datos de prueba.
using NUnit.Framework;

[TestFixture]public class CalculatorNUnitTests{ [Test] public void Subtract_ShouldReturnDifference() { var calc = new Calculator(); var result = calc.Subtract(10, 4); Assert.That(result, Is.EqualTo(6)); }

[TestCase(5, 3, 2)] [TestCase(0, 0, 0)] public void Subtract_WithParameters_ShouldReturnCorrect(int a, int b, int expected) { var calc = new Calculator(); Assert.That(calc.Subtract(a, b), Is.EqualTo(expected)); }}


MSTest

El framework integrado de Microsoft. Es ideal para proyectos simples y equipos que trabajan en el ecosistema de Visual Studio.

  • Atributos: [TestMethod], [TestClass], [DataRow].
  • Integración estrecha con Azure DevOps y pipelines de CI/CD.
using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]public class CalculatorMSTests{ [TestMethod] public void Multiply_ShouldReturnProduct() { var calc = new Calculator(); var result = calc.Multiply(4, 5); Assert.AreEqual(20, result); }

[DataRow(2, 3, 6)] [DataRow(0, 100, 0)] [DataTestMethod] public void Multiply_WithDataRows_ShouldReturnCorrect(int a, int b, int expected) { var calc = new Calculator(); Assert.AreEqual(expected, calc.Multiply(a, b)); }}


Bibliotecas para objetos mock y aislamiento

En las pruebas unitarias, a menudo es necesario aislar el código bajo prueba de las dependencias externas (BD, API, sistema de archivos). Para ello se utilizan frameworks de mock.



Moq

El más popular fra

Recommendations