Testando formulário com DUnit

Veja neste artigo dicas de como testar formulário e componentes usando o DUnit.

Olá pessoal, neste artigo abordarei sobre a utilização do Dunit um framework em vem junto com o Delphi que ajuda a fazer teste unitário.

Bem o conceito de Teste unitário surgia da ideia do ken beck em suas praticas de XP,no Delphi já existia o projeto Dunit desde 2002 e foi incorporado no Delphi na versão 2010.

Mas vamos ao que interessa imagina a seguinte telas


Figura 1. Layout Inicial


Figura 2. Incluir dois Cachorros.


Figura 3. Incluir três Aves.


Figura 4. Selecionando

Temos um RadioGroup com dois valores, sendo quando selecionar algum destes valores sera modificado o valor do combobox e quando clicar no botão selecionar ele mostrar no label o valor escolhido do combobox.

Listagem 1: Criar o nosso Teste

TestTForm1 = class(TGUITestCase) protected procedure SetUp; override; procedure TearDown; override; published procedure Hookup; end;

Como sabemos o Setup e o tearDown é executado a cada teste para que o nosso teste não seja tão custoso criar e destruir o formulário.

Listagem 2: Criar um Suite

TForm1Setup = class(TTestSetup) private FForm1 : TForm1; protected procedure SetUp; override; procedure TearDown; override; end;

Listagem 3: Códigos de nossas classes

TestTForm1 = class(TGUITestCase) protected procedure TearDown; override; published procedure Hookup; procedure TestQtdValoresComboCachorro; procedure TestQtdValoresComboAve; procedure TestClickBotaoSelecionarCombo; end;

Retornara a seguinte tela:


Figura 5. DUnit - Test Hierarchy

Listagem 4: Implementando o teste

procedure TestTForm1.TestClickBotaoSelecionarCombo; var rGroup: TRadioGroup; cBox : TComboBox; lbl: TLabel; begin rGroup := FindControl('RadioGroup1') as TRadioGroup; rGroup.itemindex :=0; cBox := FindControl('ComboBox1') as TComboBox; cBox.ItemIndex:=2; CheckEquals(cBox.Items.Count, 2); Click('Button1'); lbl := FindControl('Label2') as TLabel; CheckEquals(cBox.Text, lbl.Caption); end; procedure TestTForm1.TestQtdValoresComboCachorro; var rGroup: TRadioGroup; cBox : TComboBox; begin rGroup := FindControl('RadioGroup1') as TRadioGroup; rGroup.itemindex :=0; cBox := FindControl('ComboBox1') as TComboBox; CheckEquals(cBox.Items.Count, 2); end; procedure TestTForm1.TestQtdValoresComboAve; var rGroup: TRadioGroup; cBox : TComboBox; begin rGroup := FindControl('RadioGroup1') as TRadioGroup; rGroup.itemindex :=1; cBox := FindControl('ComboBox1') as TComboBox; CheckEquals(cBox.Items.Count, 3); end;

Após executar o nosso teste podemos ver que todos passaram com sucesso


Figura 6. Testes realizados com sucesso.

Agora vamos imaginar que tivemos que acrescentar mais um valor no nosso combo quando for escolhido o animal cachorro


Figura 7. Adicionando mais um Cachorro.

Após a nossa alteração vamos rodar o nosso teste


Figura 8. Realizando novamente o teste.

Podemos ver que ele esperava 2 item e agora tem 3 item, assim corrigimos o nosso teste para que ele possa passar novamente.

Listagem 5: Implementando mais um item

procedure TestTForm1.TestQtdValoresComboCachorro; ... CheckEquals(cBox.Items.Count, 3); ...

Bem isso ajuda no nosso dia a dia pra testar certas funcionalidades de nossas interfaces.

Artigos relacionados