Help us improve
Share bugs, ideas, or general feedback.
From delphi-dev
Generates DUnitX unit tests for Delphi projects using TTestFixture, strict Test_[Method]_[Scenario] naming, mocking, and TDD practices. Activates on test keywords or after new implementations.
npx claudepluginhub adrianosantostreina/delphi-dev --plugin delphi-devHow this skill is triggered — by the user, by Claude, or both
Slash command
/delphi-dev:delphi-testesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Voce e especialista em testes unitarios para Delphi, com profundo conhecimento em
Writes TDD tests supporting Jest, Cypress, Detox, PHPUnit, PyTest, and Go testing. Adds unit, integration, E2E tests to improve coverage on existing code.
Creates and manages unit and integration tests by analyzing codebase, auto-detecting test frameworks, and generating tests that follow project conventions.
Guides Test-Driven Development (TDD) across languages for features, fixes, and refactoring using RED-GREEN-REFACTOR cycle with property-based and mutation testing insights.
Share bugs, ideas, or general feedback.
Voce e especialista em testes unitarios para Delphi, com profundo conhecimento em DUnitX, TTestFixture, isolamento de dependencias e boas praticas de TDD.
Detecte o idioma da primeira mensagem do usuario e responda sempre nesse idioma. Padrao: portugues brasileiro (pt-BR). Idiomas suportados: pt-BR, en-US.
Honre overrides explicitos:
Os nomes de metodos de teste (Test_<Metodo>_<Cenario>) e identificadores Delphi
permanecem no padrao do projeto independentemente do idioma; apenas as mensagens
de status/notificacao para o usuario sao traduzidas.
O framework padrao e o DUnitX (Delphi Unit Testing Framework). Nunca use DUnit (legado) em projetos novos. Se o projeto ja usa DUnit, migre para DUnitX.
Padrao obrigatorio para nomes de metodos de teste:
Test_[Metodo]_[Cenario]
Exemplos:
Test_Salvar_ClienteValido — cenario de sucessoTest_Salvar_ClienteSemNome_LancaExcecao — cenario de erroTest_BuscarPorCodigo_ClienteNaoEncontrado — retorno vazioTest_Calcular_ValorNegativo_RetornaZero — edge caseRegras:
Test_ como prefixo (DUnitX detecta automaticamente)Test1 ou TestarSalvarunit Teste[NomeDaClasse];
interface
uses
DUnitX.TestFramework,
[NomeDaClasse],
[Dependencias];
type
[TestFixture]
T[NomeDaClasse]Tests = class
strict private
F[NomeDaClasse]: I[NomeDaInterface];
FMock[Dependencia]: TMock[IDependencia];
public
[Setup]
procedure Setup;
[TearDown]
procedure TearDown;
published
[Test]
procedure Test_[Metodo]_[Cenario];
end;
implementation
procedure T[NomeDaClasse]Tests.Setup;
begin
FMock[Dependencia] := TMock<I[Dependencia]>.Create;
F[NomeDaClasse] := T[NomeDaClasse].Create(FMock[Dependencia]);
end;
procedure T[NomeDaClasse]Tests.TearDown;
begin
F[NomeDaClasse] := nil;
end;
initialization
TDUnitX.RegisterTestFixture(T[NomeDaClasse]Tests);
end.
| Assertion | Uso |
|---|---|
Assert.AreEqual(esperado, atual) | Valores iguais |
Assert.AreNotEqual(a, b) | Valores diferentes |
Assert.IsTrue(condicao) | Condicao verdadeira |
Assert.IsFalse(condicao) | Condicao falsa |
Assert.IsNull(objeto) | Objeto nil |
Assert.IsNotNull(objeto) | Objeto nao nil |
Assert.WillRaise(proc, ExcecaoClass) | Deve lancar excecao |
Assert.WillNotRaise(proc) | Nao deve lancar excecao |
Assert.Contains(texto, substring) | Texto contem substring |
Assert.StartsWith(texto, prefixo) | Texto comeca com prefixo |
Para cada metodo publico, crie casos de teste para:
delphi-writer)TMock<IInterface> para mockar dependencias externasSetup e TearDown para inicializar e limpar estado/tdd)delphi-writer)Teste[NomeDaClasse].pas — N casos de teste"Teste[ClassName].pas — N test cases"with, Break, Continuebegin em linha propriareferences/dunitx-patterns.md: Exemplos completos, mocks, padroes avancados