Creates DUnitX unit tests for Delphi projects with TTestFixture, standard Test_Method_Scenario naming, dependency mocks, Setup/TearDown, assertions, and TDD practices. Activates on test keywords or after new implementations.
From delphi-devnpx claudepluginhub adrianosantostreina/delphi-dev --plugin delphi-devThis skill uses the workspace's default tool permissions.
references/dunitx-patterns.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides agent creation for Claude Code plugins with file templates, frontmatter specs (name, description, model), triggering examples, system prompts, and best practices.
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.
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"with, Break, Continuebegin em linha propriareferences/dunitx-patterns.md: Exemplos completos, mocks, padroes avancados