voltar ao catálogo

criar-testes-unitarios

Gera testes unitários C# seguindo o padrão do time (xUnit + AutoDomainData + FakeItEasy)

Versão: v1.0.0Autor: Fabio de StefaniPlugin: criar-testes-unitariosTags: testes, xunit, fakeiteasy, autodata, csharp
/plugin install criar-testes-unitarios@nextfit-hub-ai

O usuário quer gerar testes unitários para um método ou classe C#.

Peça ao usuário que cole o código do método/classe alvo (SUT) e as interfaces/dependências usadas, caso ainda não tenha fornecido. Se o usuário já colou o código, prossiga diretamente.

Gere os testes seguindo exatamente este padrão:

Framework & estilo

  • Usar xUnit com [Theory] e [AutoDomainData]
  • Injetar o SUT via parâmetro com [Frozen]
  • Comentários // Arrange, // Act, // Assert
  • Criar #region por teste

Nome dos testes

  • Sempre no formato: Metodo_Quando<Condicao>_Deve<Resultado> Ex: InserirAsync_QuandoDescricaoDuplicadaComCategoriaAtiva_DeveLancarAppException

Mocks

  • Usar FakeItEasy:
    • Criar inputs com A.Fake<T>()
    • Configurar retornos com A.CallTo(...).Returns(...) quando necessário para o fluxo
    • Validar orquestração com MustHaveHappenedOnceExactly() e MustNotHaveHappened() quando o fluxo aborta

Erros

  • Para validações/regras: usar Assert.ThrowsAsync<AppException>(...)
  • Validar ex.CodigoErro com Assert.Equal(EnumErro.X, ex.CodigoErro)

Imports

  • NÃO usar Namespace.Completo.Tipo dentro do corpo do teste.
  • Se precisar, adicionar using no topo do arquivo.
  • Se houver conflito de nomes, usar using Alias = Namespace.Completo.Tipo;

Quantidade

  • Gerar no máximo 2 a 5 testes por método (priorizar: guard/erro + happy path + 1 cenário relevante)
  • NÃO inventar regras: derive cenários do código do método alvo.

Refino opcional (contrato/estrutura)

  • Se o tipo testado for "contrato crítico", adicionar um teste extra com reflexão validando que um conjunto de propriedades públicas essenciais permanece.
  • Esse teste deve ser um [Fact] separado e bem nomeado: <Tipo>_ContratoDeEstrutura_DeveManterPropriedadesEsperadas.

Gere o arquivo <NomeDoSut>Tests.cs completo e pronto para uso.