0Pricing
C# Academy · Aula

Configuração e asserções de xUnit/MSTest

Aprenda a estrutura de um teste (Organizar-Agir-Verificar), veja como as asserções fazem os testes falharem e relacione as ideias aos atributos de MSTest/xUnit.

Configuração e asserções de xUnit/MSTest é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 1 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 3 aulas no total.

O que é um teste unitário?

Objetivo: Escrever testes unitários pequenos e repetíveis.

  • Um projeto de testes separado usa MSTest ou xUnit
  • Cada teste verifica um comportamento
  • Use nomes claros e asserções

Padrão AAA

Os testes seguem Arrange → Act → Assert. Aqui simulamos uma asserção com uma verificação simples.

using System;

public static class MathUtil
{
  // Method under test
  public static int Add(int a, int b)
  {
    return a + b;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Arrange
    int a = 2;
    int b = 3;
    int expected = 5;

    // Act
    int actual = MathUtil.Add(a, b);

    // Assert (manual check for this console demo)
    if (actual == expected)
      Console.WriteLine("PASS: Add returned " + actual);
    else
      Console.WriteLine("FAIL: expected " + expected + " but got " + actual);
  }
}

Comportamento das asserções

Uma asserção lança uma exceção quando há divergência. As estruturas reais funcionam de modo semelhante (API mais completa e relatórios melhores).

using System;

public static class Assert
{
  public static void AreEqual(int expected, int actual)
  {
    if (expected != actual)
      throw new Exception("AreEqual failed: expected " + expected + ", actual " + actual);
  }

  public static void IsTrue(bool condition, string message)
  {
    if (!condition) throw new Exception("IsTrue failed: " + message);
  }
}

public static class MathUtil
{
  public static int Mul(int a, int b) { return a * b; }
}

public class Program
{
  public static void Main(string[] args)
  {
    try
    {
      int r = MathUtil.Mul(2, 4);
      Assert.AreEqual(8, r);                 // pass
      Assert.IsTrue(r % 2 == 0, "even");     // pass
      Console.WriteLine("All assertions passed.");
    }
    catch (Exception ex)
    {
      Console.WriteLine("TEST FAILED: " + ex.Message);
    }
  }
}

Exemplo de testes aprovados

Cada teste verifica um comportamento. No MSTest/xUnit real, uma falha em Assert marca o teste em vermelho.

using System;

public static class StringUtil
{
  public static string Repeat(string s, int n)
  {
    if (n < 0) throw new ArgumentOutOfRangeException("n");
    string r = "";
    for (int i = 0; i < n; i++) r += s;
    return r;
  }
}

public static class Assert
{
  public static void AreEqual(string expected, string actual)
  {
    if (expected != actual)
      throw new Exception("AreEqual failed: expected [" + expected + "], actual [" + actual + "]");
  }
}

public class Program
{
  static void TestRepeat_Happy()
  {
    string got = StringUtil.Repeat("ab", 3);
    Assert.AreEqual("ababab", got); // pass
  }

  static void TestRepeat_EmptyTimesZero()
  {
    string got = StringUtil.Repeat("x", 0);
    Assert.AreEqual("", got); // pass
  }

  public static void Main(string[] args)
  {
    try { TestRepeat_Happy(); Console.WriteLine("PASS: Happy"); } catch (Exception ex) { Console.WriteLine("FAIL: Happy -> " + ex.Message); }
    try { TestRepeat_EmptyTimesZero(); Console.WriteLine("PASS: Zero"); } catch (Exception ex) { Console.WriteLine("FAIL: Zero -> " + ex.Message); }
  }
}

Mapeamento entre MSTest e xUnit

Noções básicas do MSTest:

  • [TestClass] na classe
  • [TestMethod] em cada teste
  • Assert.AreEqual/IsTrue/AreNotEqual…

Noções básicas do xUnit:

  • [Fact] para um método de teste
  • Assert.Equal/True/False…
  • Nenhum atributo de classe de teste é necessário

Dicas sobre nomes e escopo

Dicas:

  • Dê aos testes nomes como Method_Scenario_ExpectedResult
  • Uma asserção ou um comportamento por teste
  • Mantenha os testes pequenos e independentes

As asserções causam falhas

Verificação rápida: o que realmente faz um teste unitário falhar no MSTest ou no xUnit?

Recapitulação

Recapitulação: use o padrão AAA, compare o esperado com o real usando asserções e faça o mapeamento para MSTest ([TestMethod]) ou xUnit ([Fact]).

Perguntas Frequentes

A aula “Configuração e asserções de xUnit/MSTest” é grátis?

Sim — o texto completo de “Configuração e asserções de xUnit/MSTest” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 3 aulas no total.

O que vou aprender em “Configuração e asserções de xUnit/MSTest”?

Aprenda a estrutura de um teste (Organizar-Agir-Verificar), veja como as asserções fazem os testes falharem e relacione as ideias aos atributos de MSTest/xUnit. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 3.

Quanto tempo leva a aula “Configuração e asserções de xUnit/MSTest”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Configuração e asserções de xUnit/MSTest
  2. Falsificações por meio de interfaces; criadores de dados de teste
  3. Depuração de testes que falham
← Voltar para C# Academy