🧩 Exercícios: Testes Automatizados com xUnit, FluentAssertions e Moq
Spec Sistemas Csharp • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 16.1 — Caso de Teste Básico com [Fact] e Asserções Assert.Equal
Contexto: Caso de Teste Básico com [Fact] e Asserções Assert.Equal no contexto de Testes Automatizados com xUnit, FluentAssertions e Moq.
Requisitos de Execução:
- Criar classe de testes validando regras de cálculo de desconto com o framework xUnit.
Resultado Esperado
Testes unitários xUnit executados e aprovados com sucesso.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_1_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados com xUnit, FluentAssertions e Moq
🔑 Gabarito de Código & Solução Comentada
// CalculadoraTests.cs
using Xunit;
public class CalculadoraTests {
[Fact]
public void Somar_DoisInteiros_DeveRetornarResultadoCorreto() {
int a = 10, b = 20;
int resultado = a + b;
Assert.Equal(30, resultado);
}
}
🔍 Nível 2: Prática
Problema 16.2 — Testes Parametrizados com [Theory] e [InlineData]
Contexto: Testes Parametrizados com [Theory] e [InlineData] no contexto de Testes Automatizados com xUnit, FluentAssertions e Moq.
Requisitos de Execução:
- Executar o mesmo método de teste com múltiplos conjuntos de dados de entrada e saída esperada.
Resultado Esperado
Teoria xUnit aprovada para todos os cenários de teste parametrizados.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_2_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados com xUnit, FluentAssertions e Moq
🔑 Gabarito de Código & Solução Comentada
// TheoryTests.cs
using Xunit;
public class ValidacaoTests {
[Theory]
[InlineData(2, true)]
[InlineData(3, false)]
[InlineData(0, true)]
public void EhPar_DeveValidarParidade(int numero, bool esperado) {
bool resultado = numero % 2 == 0;
Assert.Equal(esperado, resultado);
}
}
⚡ Nível 3: Integração
Problema 16.3 — Mocking de Interfaces com a Biblioteca Moq
Contexto: Mocking de Interfaces com a Biblioteca Moq no contexto de Testes Automatizados com xUnit, FluentAssertions e Moq.
Requisitos de Execução:
- Mockar interface de repositório com
Mock<IRepositorio>configurando retorno com.Setup(x => x.Buscar(1)).Returns(...).
Resultado Esperado
Dependência externa mockada permitindo teste unitário isolado da regra de serviço.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_3_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados com xUnit, FluentAssertions e Moq
🔑 Gabarito de Código & Solução Comentada
// MockTests.cs
using Moq;
using Xunit;
public interface IUsuarioRepo { string ObterNome(int id); }
public class MockTests {
[Fact]
public void TestarServicoComMock() {
var mock = new Mock<IUsuarioRepo>();
mock.Setup(r => r.ObterNome(1)).Returns("Carlos");
Assert.Equal("Carlos", mock.Object.ObterNome(1));
}
}
🏆 Nível 4: Desafio Corporativo
Problema 16.4 — Asserções Fluentes e Legíveis com FluentAssertions
Contexto: Asserções Fluentes e Legíveis com FluentAssertions no contexto de Testes Automatizados com xUnit, FluentAssertions e Moq.
Requisitos de Execução:
- Escrever asserções expressivas com
resultado.Should().Be(30).And.BePositive().
Resultado Esperado
Asserções fluentes executadas com mensagens de falha ricas e descritivas.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_4_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados com xUnit, FluentAssertions e Moq
🔑 Gabarito de Código & Solução Comentada
// FluentTests.cs
using FluentAssertions;
using Xunit;
public class RegraNegocioTests {
[Fact]
public void Validar_ComEntradaValida_DeveRetornarSucesso() {
int resultado = 30;
string[] permissoes = ["Admin", "Editor"];
resultado.Should().Be(30).And.BePositive();
permissoes.Should().HaveCount(2).And.Contain("Admin");
}
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |