csharp-tunit
Ajuda seu agente a escrever testes unitários eficientes em C# usando TUnit. Ele ensina as melhores práticas, incluindo como criar testes que usam dados variados.
O que ela faz
Este guia ensina como escrever testes de código eficientes usando TUnit, uma ferramenta para verificar se seu programa funciona corretamente. Ele cobre testes normais e testes com dados variados.
Quando usar
- ✓Ao criar testes para verificar funcionalidades específicas.
- ✓Ao precisar testar um código com muitos cenários diferentes.
- ✓Ao migrar de outra ferramenta de teste como xUnit.
Exemplo do que pedir para a IA
“Como configuro um novo projeto de teste com TUnit?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
TUnit ajuda a organizar seus testes de código. Você escreve testes que seguem um padrão (preparar, agir, verificar) e usa atributos especiais para definir como e quando eles rodam, além de verificar os resultados.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add github/awesome-copilot --skill csharp-tunitOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/csharp-tunit/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Melhores Práticas do TUnit
Seu objetivo é me ajudar a escrever testes unitários eficazes com TUnit, cobrindo abordagens de teste padrão e orientadas por dados.
Configuração do Projeto
- Use um projeto de teste separado com a convenção de nomenclatura
[ProjectName].Tests - Referencie o pacote TUnit e TUnit.Assertions para asserções fluentes
- Crie classes de teste que correspondam às classes que estão sendo testadas (por exemplo,
CalculatorTestsparaCalculator) - Use comandos de teste do SDK do .NET:
dotnet testpara executar testes - O TUnit requer .NET 8.0 ou superior
Estrutura de Teste
- Nenhum atributo de classe de teste é necessário (como xUnit/NUnit)
- Use o atributo
[Test]para métodos de teste (não[Fact]como xUnit) - Siga o padrão Arrange-Act-Assert (AAA)
- Nomeie testes usando o padrão
MethodName_Scenario_ExpectedBehavior - Use ganchos de ciclo de vida:
[Before(Test)]para configuração e[After(Test)]para desmontagem - Use
[Before(Class)]e[After(Class)]para contexto compartilhado entre testes em uma classe - Use
[Before(Assembly)]e[After(Assembly)]para contexto compartilhado entre classes de teste - O TUnit suporta ganchos de ciclo de vida avançados como
[Before(TestSession)]e[After(TestSession)]
Testes Padrão
- Mantenha os testes focados em um único comportamento
- Evite testar múltiplos comportamentos em um único método de teste
- Use a sintaxe de asserção fluente do TUnit com
await Assert.That() - Inclua apenas as asserções necessárias para verificar o caso de teste
- Torne os testes independentes e idempotentes (podem ser executados em qualquer ordem)
- Evite interdependências de testes (use o atributo
[DependsOn]se necessário)
Testes Orientados por Dados
- Use o atributo
[Arguments]para dados de teste inline (equivalente ao[InlineData]do xUnit) - Use
[MethodData]para dados de teste baseados em métodos (equivalente ao[MemberData]do xUnit) - Use
[ClassData]para dados de teste baseados em classes - Crie fontes de dados personalizadas implementando
ITestDataSource - Use nomes de parâmetros significativos em testes orientados por dados
- Múltiplos atributos
[Arguments]podem ser aplicados ao mesmo método de teste
Asserções
- Use
await Assert.That(value).IsEqualTo(expected)para igualdade de valor - Use
await Assert.That(value).IsSameReferenceAs(expected)para igualdade de referência - Use
await Assert.That(value).IsTrue()ouawait Assert.That(value).IsFalse()para condições booleanas - Use
await Assert.That(collection).Contains(item)ouawait Assert.That(collection).DoesNotContain(item)para coleções - Use
await Assert.That(value).Matches(pattern)para correspondência de padrões regex - Use
await Assert.That(action).Throws<TException>()ouawait Assert.That(asyncAction).ThrowsAsync<TException>()para testar exceções - Encadeie asserções com o operador
.And:await Assert.That(value).IsNotNull().And.IsEqualTo(expected) - Use o operador
.Orpara condições alternativas:await Assert.That(value).IsEqualTo(1).Or.IsEqualTo(2) - Use
.Within(tolerance)para comparações de DateTime e numéricas com tolerância - Todas as asserções são assíncronas e devem ser aguardadas
Recursos Avançados
- Use
[Repeat(n)]para repetir testes várias vezes - Use
[Retry(n)]para retentativas automáticas em caso de falha - Use
[ParallelLimit<T>]para controlar os limites de execução paralela - Use
[Skip("reason")]para pular testes condicionalmente - Use
[DependsOn(nameof(OtherTest))]para criar dependências de testes - Use
[Timeout(milliseconds)]para definir timeouts de teste - Crie atributos personalizados estendendo os atributos base do TUnit
Organização de Testes
- Agrupe testes por recurso ou componente
- Use
[Category("CategoryName")]para categorização de testes - Use
[DisplayName("Custom Test Name")]para nomes de testes personalizados - Considere usar
TestContextpara diagnósticos e informações de teste - Use atributos condicionais como
[WindowsOnly]personalizado para testes específicos da plataforma
Desempenho e Execução Paralela
- O TUnit executa testes em paralelo por padrão (ao contrário do xUnit, que requer configuração explícita)
- Use
[NotInParallel]para desabilitar a execução paralela para testes específicos - Use
[ParallelLimit<T>]com classes de limite personalizadas para controlar a concorrência - Testes dentro da mesma classe são executados sequencialmente por padrão
- Use
[Repeat(n)]com[ParallelLimit<T>]para cenários de teste de carga
Migração do xUnit
- Substitua
[Fact]por[Test] - Substitua
[Theory]por[Test]e use[Arguments]para dados - Substitua
[InlineData]por[Arguments] - Substitua
[MemberData]por[MethodData] - Substitua
Assert.Equalporawait Assert.That(actual).IsEqualTo(expected) - Substitua
Assert.Trueporawait Assert.That(condition).IsTrue()
…
Perguntas frequentes
O que são testes 'data-driven'?
São testes que rodam várias vezes com dados diferentes, sem que você precise escrever o mesmo teste várias vezes. É como ter um teste que se multiplica com informações variadas.
Como eu verifico se algo deu errado no teste?
Você usa comandos como 'Assert.That(valor).IsEqualTo(esperado)' para comparar o resultado real com o que você esperava. Se não forem iguais, o teste falha.
Posso rodar os testes em paralelo?
Sim, TUnit roda testes em paralelo por padrão para acelerar a execução, mas você pode controlar quais rodam juntos ou separadamente.
Detalhes
Descrição original do autor
Get best practices for TUnit unit testing, including data-driven tests
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5098
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC