A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Projeto Maven AcademicNet Grupo DGMR Daniel Isidoro Born Guilherme Amaral Márcio Percilio Roberto Rutz.

Apresentações semelhantes


Apresentação em tema: "Projeto Maven AcademicNet Grupo DGMR Daniel Isidoro Born Guilherme Amaral Márcio Percilio Roberto Rutz."— Transcrição da apresentação:

1 Projeto Maven AcademicNet Grupo DGMR Daniel Isidoro Born Guilherme Amaral Márcio Percilio Roberto Rutz

2 Implementações Logging Script do banco de dados Arquivo de propriedades com Spring DI Testes Junit Teste DBUnit Teste Selenium Spring MVC

3 Logging Arquivo de propriedades: log4j.properties #define o nível do logger raiz e o nome de seu appender (htmlAppender) log4j.rootLogger=INFO, htmlAppender # define a classe do appender log4j.appender.htmlAppender=org.apache.log4j.RollingFileAppender #nome do arquivo de log log4j.appender.htmlAppender.File=logging/HTMLLayout.html # define a classe para formação (layout) log4j.appender.htmlAppender.layout=org.apache.log4j.HTMLLayout # define que deve ser registrada informação de contexto log4j.appender.htmlAppender.layout.LocationInfo=true # título do arquivo de log log4j.appender.htmlAppender.layout.Title=Log gerado pelo Log4j

4 Logging Ex: Arquivo MensalidadeInserir.java package br.com.senac.academicnet.commands;... import br.com.senac.academicnet.business.Mensalidade; import br.com.senac.academicnet.dao.FacadeDAO; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class MensalidadeInserir extends AbstractCommand { Logger logger = public void processarComando(HttpServletRequest request, HttpServletResponse response, HttpServlet servlet) { PropertyConfigurator.configure("log4j.properties"); logger.info("Obtendo parâmetros de entrada."); int idAluno = Integer.parseInt(request.getParameter("idAluno")); String dataParcela = request.getParameter("dataParcela"); String dataPagamento = request.getParameter("dataPagamento"); double valor = Double.parseDouble(request.getParameter("valor"));... }... }

5 Logging Ex: Arquivo de saída: HTMLLayout.html

6 Script do banco de dados Ex: Arquivo AcademicNetDB.sql PostgreSQL database dump Started on :34:10 SET client_encoding = 'SQL_ASCII'; SET standard_conforming_strings = off; SET check_function_bodies = false; SET client_min_messages = warning; SET escape_string_warning = off;... CREATE TABLE mensalidade ( id integer NOT NULL, data_parcela date NOT NULL, data_pagto date NOT NULL, valor numeric(10,2) NOT NULL, id_aluno integer );... ALTER TABLE public.mensalidade OWNER TO postgres;... REVOKE ALL ON SCHEMA public FROM PUBLIC; REVOKE ALL ON SCHEMA public FROM postgres; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO PUBLIC; -- Completed on :34: PostgreSQL database dump complete --

7 Arquivo de propriedades com Spring DI Ex. applicationContext.xml org.postgresql.Driver jdbc:postgresql://localhost/academicNetDB 5432 postgres postpost

8 Testes JUnit Ex: Arquivo TestMensalidade.java package br.com.senac.academicnet.junit; import br.com.senac.academicnet.business.*; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class TestMensalidade { Mensalidade m = new public void setUp() { m.setDataPagamento("10/10/2009"); m.setDataParcela("20/10/2009"); m.setValor(-1); public void testDataPagamento() { assertFalse("Data de Pagamento da mensalidade deve ser igual ou maior que data da parcela.", m.dataPagamentoOK() ); public void testValor() { assertFalse("Valor da mensalidade deve ser igual ou maior que zero.", m.valorOK() ); }

9 Testes JUnit Ex: Arquivo TestAtribuicao.java package br.com.senac.academicnet.junit; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; import br.com.senac.academicnet.business.Atribuicao; public class TestAtribuicao { Atribuicao a = new public void setUp() { a.setUserid("abc"); a.setNome("joaquim"); public void testUserId() { assertNotNull("Userid deve ser não null.", a.getUserid()); assertTrue("Userid deve conter algum caractere.", a.getUserid().length() > 0); public void testNome() { assertNotNull("Nome deve ser não null.", a.getNome()); assertTrue("Nome deve conter algum caractere.", a.getNome().length() > 0); }

10 Testes JUnit Ex: Arquivo TestFrequencia.java package br.com.senac.academicnet.junit; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; import br.com.senac.academicnet.business.Frequencia; public class TestFrequencia { Frequencia frq = new public void setUp() { frq.setData("26/10/2009"); frq.setId_aluno(1); frq.setId_turma(1); public void testData() { assertNotNull("Data nao pode ser nula.", frq.getData()); assertTrue("Data deve ser preenchida.", frq.getData().length() > 0); public void testAluno() { assertNotNull("Aluno nao pode ser nulo.", frq.getId_aluno()); assertTrue("Aluno deve ser preenchido.", frq.getId_aluno() > 0); public void testTurma() { assertNotNull("Turma nao pode ser nula.", frq.getId_turma()); assertTrue("Turma deve ser preenchida.", frq.getId_turma() > 0); }

11 Testes JUnit Ex: Arquivo TestInscricao.java package br.com.senac.academicnet.junit; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import br.com.senac.academicnet.business.Congresso; import br.com.senac.academicnet.business.Inscricao; public class TestInscricao { Inscricao inscricao; Congresso public void setUp() throws Exception { inscricao = new Inscricao(); congresso = new Congresso(); inscricao.setData("10/01/2000"); inscricao.setCusto(200); congresso.setNome("Informática"); congresso.setData("11/01/2000"); public void testDataInscricao() { assertTrue("A data da inscrição deve ser efetuada antes ou até a data do congresso.", inscricao.Confirmacao(congresso.getData()) ); public void testCustoInscricao() { assertTrue("O custo da inscrição deve ser maior que zero.", inscricao.CustoInscricao() ); public void tearDown() throws Exception { inscricao = null; congresso = null; }

12 Testes JUnit Ex: Arquivo TestUsuario.java package br.com.senac.academicnet.junit; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; import br.com.senac.academicnet.business.Usuario; public class TestUsuario { Usuario u = new public void setUp() { u.setUserid("abc"); u.setSenha("123456"); public void testUserId() { assertNotNull("Userid deve ser não null.", u.getUserid()); assertTrue("Userid deve conter algum caractere.", u.getUserid().length() > 0); public void testSenha() { assertNotNull("Senha deve ser não null.", u.getSenha()); assertTrue("Senha deve conter algum caractere.", u.getSenha().length() > 0); }

13 Teste DBUnit Ex: Arquivo TestUsuarioDAO.java package br.com.senac.academicnet.dbunit; import static org.junit.Assert.*; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; import org.junit.Before; import org.junit.Test; import br.com.senac.academicnet.business.Usuario; import br.com.senac.academicnet.dao.UsuarioDAO; import br.com.senac.academicnet.util.DBConexao; import br.com.senac.academicnet.util.DBConfig; public class TestUsuarioDAO { UsuarioDAO usuarioDAO = public void setUp() throws Exception { Properties properties = new Properties(); try { properties.load(new FileInputStream("./dbconfig.properties")); } catch (IOException e) { System.out.println("Arquivo dbconfig.properties não encontrado."); e.printStackTrace(); System.exit(1); } DBConfig dbConfig = new DBConfig(); dbConfig.setConfiguracao(properties); DBConexao db = DBConexao.getInstance(dbConfig); usuarioDAO = DAOTstFactory.getUsuarioDAO(db); }

14 Teste DBUnit Ex: Arquivo TestUsuarioDAO.java public void testIncluirUsuario() throws Exception { Usuario u = new Usuario(); u.setUserid("abcde"); u.setSenha("123456"); u.setPerfil("Aluno"); String msg = usuarioDAO.adicionarUsuario(u); assertTrue(msg.contains("Usuário cadastrado com sucesso")); public void testAlterarUsuario() throws Exception { Usuario u = usuarioDAO.leUsuarioPorUserid("abcde"); u.setSenha("xyz123"); String msg = usuarioDAO.atualizaUsuario(u); assertNull(msg); public void testExcluirUsuario() throws Exception { Usuario u = usuarioDAO.leUsuarioPorUserid("abcde"); String msg = usuarioDAO.removerUsuario(u.getId()); assertNull(msg); }

15 Teste Selenium Ex: Arquivo TestUsuarioDAO.java package br.com.senac.academicnet.selenium; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.server.SeleniumServer; import com.thoughtworks.selenium.DefaultSelenium; import com.thoughtworks.selenium.Selenium; public class MensalidadeTest { private static final String MAX_WAIT_TIME_IN_MS = "60000"; private Selenium selenium = new DefaultSelenium("localhost", 4444,"*iexplore", baseUrl()); private static SeleniumServer public static void setUpClass() throws Exception { seleniumServer = new SeleniumServer(); seleniumServer.start(); public void setUp() throws Exception { selenium.start(); selenium.windowMaximize(); public void tearDown() throws Exception { selenium.stop(); public static void tearDownClass() throws Exception { seleniumServer.stop(); }

16 Teste Selenium Ex: Arquivo TestUsuarioDAO.java public void testIncluirMensalidade() { selenium.open(baseUrl()); login(); selenium.click("link=Adicionar"); selenium.waitForPageToLoad(MAX_WAIT_TIME_IN_MS); // Selecionar Aluno selenium.select("idAluno", "2-Maria"); // Informar dados da mensalidade selenium.type("dataParcela", "01/10/2009"); selenium.type("dataPagamento", "01/10/2009"); selenium.type("valor", "200.0"); // Inserir mensalidade selenium.click("btnInserir"); selenium.waitForPageToLoad(MAX_WAIT_TIME_IN_MS); assertTrue(selenium.isTextPresent("Mensalidade Cadastrada com Sucesso")); public void testAlterarMensalidade() { selenium.open(baseUrl()); login(); selenium.click("link=Consultar"); // Selecionar Aluno selenium.select("idAluno", "2-Maria"); selenium.click("btnSelecionar"); selenium.waitForPageToLoad(MAX_WAIT_TIME_IN_MS); assertFalse(selenium.isTextPresent(" Não existe mensalidade para o aluno selecionado")); selenium.click("link=Alterar"); selenium.waitForPageToLoad(MAX_WAIT_TIME_IN_MS); // Informar novos dados da mensalidade selenium.type("dataPagamento", "01/11/2009"); selenium.type("valor", "300.0"); // Alterar mensalidade selenium.click("btnAlterar"); selenium.waitForPageToLoad(MAX_WAIT_TIME_IN_MS); assertTrue(selenium.isTextPresent("2-Maria")); assertTrue(selenium.isTextPresent("300.0")); }

17 Teste Selenium Ex: Arquivo TestUsuarioDAO.java public void testExcluirMensalidade() { selenium.open(baseUrl()); login(); selenium.click("link=Consultar"); // Selecionar Aluno selenium.select("idAluno", "2-Maria"); selenium.click("btnSelecionar"); selenium.waitForPageToLoad(MAX_WAIT_TIME_IN_MS); assertFalse(selenium.isTextPresent(" Não existe mensalidade para o aluno selecionado")); selenium.click("link=Excluir"); selenium.waitForPageToLoad(MAX_WAIT_TIME_IN_MS); assertTrue(selenium.isTextPresent("2-Maria")); assertFalse(selenium.isTextPresent("300.0")); } public String baseUrl() { return "http://localhost:8080/AcademicNetWar-DGMR/login.jsp"; } public void login() { selenium.type("username", "admin"); selenium.type("password", "admin"); selenium.click("btnEnviar"); selenium.waitForPageToLoad(MAX_WAIT_TIME_IN_MS); selenium.click("link=Mensalidades"); selenium.waitForPageToLoad(MAX_WAIT_TIME_IN_MS); }

18 Spring MVC Ex: Arquivo DGMRServlet-servlet.xml ... messages org.springframework.web.servlet.view.JstlView /.jsp... org.postgresql.Driver jdbc:postgresql://localhost/AcademicNetDB 5432 postgres post

19 Spring MVC Ex: Arquivo MensalidadeInserirController.java package br.com.senac.academicnet.controllers; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; import java.util.HashMap; import br.com.senac.academicnet.business.Mensalidade; import br.com.senac.academicnet.dao.AlunoDAO; import br.com.senac.academicnet.dao.MensalidadeDAO; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class MensalidadeInserirController extends AbstractController{ private Logger logger = Logger.getLogger(MensalidadeInserirController.class.getName()); private MensalidadeDAO mensalidadeDAO; private AlunoDAO dao; public void setMensalidadeDAO(MensalidadeDAO dao){ this.mensalidadeDAO = dao; } public void setDao(AlunoDAO dao){ this.dao = protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { PropertyConfigurator.configure("log4j.properties"); // Recuperando parâmetros de entrada logger.info("Obtendo parâmetros de entrada."); int idAluno = Integer.parseInt(request.getParameter("idAluno")); String dataParcela = request.getParameter("dataParcela"); String dataPagamento = request.getParameter("dataPagamento"); double valor = Double.parseDouble(request.getParameter("valor"));

20 Spring MVC Ex: Arquivo MensalidadeInserirController.java (Cont.) // Criação de um objeto Mensalidade logger.info("Criando um objeto Mensalidade."); Mensalidade m = new Mensalidade(); m.setDataPagamento(dataPagamento); m.setDataParcela(dataParcela); m.setValor(valor); m.setIdAluno(idAluno); logger.info("Inserindo um objeto mensalidade na tabela."); String msg = mensalidadeDAO.inserir(m); logger.info("Recuperando a lista de alunos da tabela."); ArrayList lista = dao.listar(); logger.info("Salvando os parâmetros no HashMap"); Map modelo = new HashMap(); modelo.put("msg", msg); modelo.put("lista", lista); logger.info("Direcionando para a janela Inserir Mensalidade (Visão)"); ModelAndView mav = new ModelAndView("mensalidadeInserir", "modelo", modelo); return mav; }

21 Spring MVC Ex: Arquivo mensalidadeInserir.jsp Inserir Mensalidade por Aluno Selecione o aluno: ${alu.matricula}-${alu.nome} Data da Parcela: Data do Pagamento: Valor:


Carregar ppt "Projeto Maven AcademicNet Grupo DGMR Daniel Isidoro Born Guilherme Amaral Márcio Percilio Roberto Rutz."

Apresentações semelhantes


Anúncios Google