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.