140 likes | 272 Views
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.
E N D
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 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: • Assert.assertEquals(2 , somaMetodo(1,1)); • 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 Framework Possui métodos para comparação entre tabelas. Comparando tabelas • public class Assertion { public static void assertEquals(ITable expected, ITable actual) public static void assertEquals(IDataSet expected, IDataSet actual) } • Assertion.assertEquals(new SortedTable(expected), new SortedTable(actual, expected.getTableMetaData())); • 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.