SENAC – Curso de Pós-graduação em Engenharia de Software com J2EEMódulo: Web Application Interface - Turma 2 Prof. Ismael
DBUnit Framework
Componentes: Fábio GomesClaver Pari Eni Conde
Framework
O que é Framework?
- é um conjunto de conceitos usados para resolver um problema de um domínio específico.
Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.
— FAYAD e SCHMIDT
O Framework conceitual não se trata de um software executável, mas sim de um modelo de dados para um domínio.
Os Framework tornam mais eficientes a solução de problemas.
JUnit Framework
É utilizado por aqueles que desejam implementar testes unitários em Java.
Com JUnit, o programador tem uma ferramenta que o ajuda a eliminar os erros de seu código de maneira automatizada. Uma vez programado pode ser executado quantas vezes necessário.
Tipicamente um teste unitário executa um método individualmente e compara uma saída conhecida após o processamento da mesma. Por exemplo:
1. Assert.assertEquals(2 , somaMetodo(1,1));
2. Assert.assertEquals("A lista vazia deve ter 0 elementos", 0, listaVazia.size());
DBUnit Framework
• DbUnit é mais abrangente que o popular JUnit test Framework. Além de implementar todas as suas funcionalidades acrescenta outras específicas para Banco de Dados.
• Auxilia de forma racional a execução de Testes automatizados que utilizam Banco de Dados.
• Mantem o Banco de Dados no seu estado inicial evitando dados corrompidos por falhas da fase de teste.
• Sua realização é importante no sentido de gerir os dados dos testes.
• Pode manipular grande massa de dados.
DBUnit Framework• Possui mecanismos simples para exportar e importar
tabelas para posterior utilização.
• Exportando uma tabela
public void testExportData() throws Exception {
IDataSet dataSet = getConnection().createDataSet(new String[] { TABLE_NAME });
URL url = DatabaseTestCase.class.getResource("/input.xml"); assertNotNull(url);
File inputFile = new File(url.getPath()); File outputFile = new File(inputFile.getParent(), "output.xml");
FlatXmlDataSet.write(dataSet, new FileOutputStream(outputFile));
assertEquals(FileUtils.readFileToString(inputFile, "UTF8"), FileUtils.readFileToString(outputFile, "UTF8"));
}
DBUnit Framework
• O DBUnit permite que arquivos XML possam ser criados manualmente, a partir do zero. Ou ainda carregados a partir de uma tabela.
• Possui um mecanismo simples, baseado em XML, para carga de dados.
• Criando um arquivo XML
protected IDataSet getDataSet() throws Exception {
loadedDataSet = new FlatXmlDataSet(this.getClass().getClassLoader().getResourceAsStream("input.xml"));
return loadedDataSet; }
DBUnit FrameworkPossui métodos para comparação entre tabelas.Comparando tabelas
1. public class Assertion {
public static void assertEquals(ITable expected, ITable actual)public static void assertEquals(IDataSet expected, IDataSet actual)
}
2. Assertion.assertEquals(new SortedTable(expected), new SortedTable(actual, expected.getTableMetaData()));
2. public void testCompareQuery() throws Exception{
QueryDataSet queryDataSet = new QueryDataSet(getConnection()); queryDataSet.addTable(TABLE_NAME, "SELECT * FROM “ + TABLE_NAME);
Assertion.assertEquals(loadedDataSet, queryDataSet);}
DBUnit Framework
• O ciclo de vida do Teste DbUnit – O cenário básico para a execução de teste com
DbUnit é o seguinte: • remover qualquer dado antigo, de testes anteriores, no
banco de dados.• carregar alguns dados do sistema de arquivos para o
banco de dados.• executar alguns testes, utilizando métodos DbUnit para
fazer as comparações.
DBUnit Framework
• O ciclo de vida do Teste DbUnit– As duas primeiras operações ocorrem durante a execução do método
JUnit setup().
– Os testes podem rodar um pouco mais devagar, mas a idéia é que o SetUp somente carregue os dados para um teste específico, ao invés dos dados requeridos para todos os testes.
– Note que a restauração do banco é feita antes de executar os testes e não após. Esta é a prática recomendada pelos autores do DbUnit.
DBUnit Framework
• Permite ver como o métodos setUp() e tearDown() são executados no DatabaseTestCase classe.
protected void setUp() throws Exception {
super.setUp(); executeOperation(getSetUpOperation());
} protected void tearDown() throws Exception {
super.tearDown(); executeOperation(getTearDownOperation());
}
DBUnit Framework
Conectando o banco
protected IDatabaseConnection getConnection() throws Exception {
Class driverClass = Class.forName("com.mysql.jdbc.Driver"); Connection jdbcConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/Framework
Database", "root", “password"); return new DatabaseConnection(jdbcConnection);
}
DBUnit Framework
• Boas práticas– Unit Test Frameworks - é um elemento chave
Importante para Programação em Desenvolvimento Ágil.
– Elas ajudam a garantir baixo nível de correção de código, reduzir tempo de ciclo do desenvolvimento do software, melhorar a produtividade do desenvolvedor, e produzir software mais robustos.
DBUnit Framework
Resumo • DbUnit é uma ferramenta poderosa e simples de usar, permitindo o
desenvolvimento de aplicações de bancos de dados.
• DbUnit é projetado em torno de interfaces Java flexíveis, tornando fácil adaptar aos requisitos da aplicação.
• É simples incluir o DbUnit como parte do processo de desenvolvimento da sua aplicação de banco de dados e aproveitar as vantagens das suas poderosas caracteristicas de economia de tempo.
DBUnit Framework
Resumo • O DbUnit framework tem a habilidade de gerenciar o estado de um
banco de dados, em que através de testes de ciclo de vida, permite a criação e adoção de test-case rápidos.
• Os testes que utilizam o framework do DbUnit são facilmente automatizados.
• DbUnit possui design elegante e por ser de fácil aprendizado, logo faz parte de uma estratégia eficaz de testes, proporcionando código com estabilidade aumentando dramaticamente a confiança de sua equipe de desenvolvimento.