Testes em C# (.NET): visão geral completa de frameworks e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Testes em C# (.NET): frameworks e ferramentas



Testes são uma parte essencial do desenvolvimento profissional na plataforma .NET. Uma cobertura de código de qualidade com testes reduz o número de bugs, simplifica a refatoração e aumenta a confiança no produto. No ecossistema C#, existem muitos frameworks e utilitários maduros, cada um resolvendo tarefas específicas: desde testes unitários até verificações de integração e testes de UI. Neste artigo, vamos analisar as principais ferramentas, suas capacidades e exemplos de uso.



Principais frameworks para testes unitários



Testes unitários são a base da pirâmide de testes. No .NET Core / .NET 5+, o padrão de facto tornou-se o xUnit.net, embora NUnit e MSTest também sejam ativamente utilizados.



xUnit.net

Framework moderno, flexível e mais popular. Funciona com base no princípio de "facts" e "theories".

  • Facts — testes simples sem parâmetros.
  • Theories — testes parametrizados com dados dos atributos [InlineData] ou [MemberData].
  • Não requer o atributo [TestClass] — qualquer classe pública pode conter testes.
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

Framework clássico com uma rica história. Diferencia-se por atributos poderosos e suporte a parametrização.

  • Utiliza os atributos [Test], [TestCase], [SetUp].
  • Suporta execução paralela de testes.
  • Conveniente para cenários complexos com dados de teste.
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

Framework integrado da Microsoft. Ideal para projetos simples e equipes que trabalham no ecossistema Visual Studio.

  • Atributos: [TestMethod], [TestClass], [DataRow].
  • Integração estreita com Azure DevOps e pipelines 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 e isolamento

Ao testar unidades, muitas vezes é necessário isolar o código testado de dependências externas (BD, API, sistema de arquivos). Para isso, são utilizados frameworks de mock.



Moq

O framework mais popular

Recommendations