Recentemente estive em um workshop na TECNOPUC em Porto Alegre, realizado pela DBServer, sobre automação de testes utilizando o framework FEST. O evento demonstrou como é simples aplicar a automação de testes em janelas gráficas SWING, juntamente com o FEST.
Em poucas palavras, o framework utiliza as informações sobre os componentes (nome, visibilidade, etc) e não por suas coordenadas. A abordagem utilizando coordenadas (x,y) é ruim, pois se você trocar de máquina, resolução, sistema operacional, ou qualquer outra coisa que possa interferir nas coordenadas, o teste vai falhar. Desta forma, o FEST acaba com esse problema, pois ele encontra a posição desses componentes utilizando suas propriedades.
Vou demonstrar uma aplicação simples, com dois JLabel, dois JTextField e dois JButton. A interface tem duas funcionalidades: Botão “Salvar”, que persiste a informação e o botão “Limpar”, que remove as informações contidas nos campos. Abaixo uma imagem da janela SWING criada.
Para demonstrar o FEST, vou aplicar dois testes:
- Inserir conteúdo nos campos e simular o clique no botão “Salvar”;
- Simular o botão “Limpar” e verificar se informações foram limpas.
O código abaixo demonstra a simplicidade para aplicar os testes, utilizando o framework:
public class CadastroTest {
private static FrameFixture window;
@BeforeClass
public static void setUp() {
Cadastro frame = new Cadastro();
frame.setVisible(true);
window = new FrameFixture(frame);
}
@Test
public void salvarEmpresa() {
window.textBox("txtCodigo").setText("1");
window.textBox("txtEmpresa").setText("Empresa AAA");
window.button("btnSalvar").click();
}
@Test
public void limparCampos() {
window.textBox("txtCodigo").setText("1");
window.textBox("txtEmpresa").setText("Empresa AAA");
window.button("btnLimpar").click();
window.textBox("txtCodigo").requireEmpty();
window.textBox("txtEmpresa").requireEmpty();
}
}
O primeiro método de teste “salvarEmpresa”, insere as informações nos campos de código da empresa e nome da empresa e após simula o clique no botão “Salvar”. Nesse ponto, podem ser criados testes para verificar se a informação foi salva no banco de dados.
No segundo método de teste “limparCampos”, é simulado uma inserção de conteúdo nos campos e acionado o botão para limpar. Propositalmente, não foi implementado o botão “Limpar” na janela Swing, para simular uma falha no teste, pois obrigatoriamente eu indico para o framework que os campos “txtCodigo” e “txtEmpresa” não contenham nenhuma informação. A imagem abaixo demonstra a saída do framework, com erro.
Após aplicar a funcionalidade de limpar os dados e rodar novamente o teste, o framework fez seu trabalho.
Bom, o post é bem básico mesmo, apenas para dar uma noção de como o framework funciona. Para quem interessar, estou deixando alguns links com mais informações sobre ele!
Links: