DBUnit Framework Componentes: Fábio Gomes Claver Pari Eni Conde

14
SENAC – Curso de Pós-graduação em Engenharia de Software com J2EE Módulo: Web Application Interface - Turma 2 Prof. Ismael DBUnit Framework Componentes: Fábio Gomes Claver Pari Eni Conde

description

SENAC – Curso de Pós-graduação em Engenharia de Software com J2EE Módulo: Web Application Interface - Turma 2 Prof. Ismael. DBUnit Framework Componentes: Fábio Gomes Claver Pari Eni Conde. Framework. JUnit Framework. - PowerPoint PPT Presentation

Transcript of DBUnit Framework Componentes: Fábio Gomes Claver Pari Eni Conde

Page 1: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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

Page 2: DBUnit Framework Componentes: Fábio Gomes Claver 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.

Page 3: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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());

Page 4: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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.

Page 5: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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"));

}

Page 6: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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; }

Page 7: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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);}

Page 8: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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.

Page 9: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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.

Page 10: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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());

}

Page 11: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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);

}

Page 12: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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.

Page 13: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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.

Page 14: DBUnit Framework Componentes: Fábio Gomes Claver Pari   Eni Conde

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.