Exercício de mock: projeto mock-leilao
Exercício de mock: projeto mock-leilao
Link para o exercício no GitHub Classroom (veja o prazo da atividade no link)
O projeto mock-leilao é um gerenciador de leilões. A classe EncerradorDeLeilao é responsável por encerrar os leilões iniciados há pelo menos 7 dias (método encerra()). Ela colabora com objetos que implementam as seguintes interfaces:
RepositorioDeLeiloes: fornece acesso aos leilões armazenados em alguma fonte de dados (por exemplo, um banco de dados). Essa interface especifica um DAO (data access object). Métodos:salvar(Leilao): insere um leilão na fonte de dadosatualiza(Leilao): atualiza os dados de um leilãoencerrados(): retorna os leilões encerradoscorrentes(): retornas os leilões que não foram encerrados
EnviadorDeEmail: o métodoenvia(Leilao)é responsável por enviar uma mensagem de e-mail com dados de um leilão.
Sua tarefa é implementar 4 testes para o método encerra() da classe EncerradorDeLeilao, de acordo com a seguinte especificação:
deveEncerrarLeiloesQueComecaramUmaSemanaAtras: dado que o repositório possui dois leilões antigos (criados há pelo menos 1 semana), ao chamarEncerradorDeLeilao.encerra(), os dois leilões devem estar encerrados, e o número total de leilões encerrados deve ser 2.naoDeveEncerrarLeiloesQueComecaramMenosDeUmaSemanaAtras: dado que o repositório possui dois leilões recentes (criados há menos de 7 dias), ao chamarEncerradorDeLeilao.encerra(), os dois leilões não devem estar encerrados, e não deve haver nenhuma atualização de dados no repositório de leilões.deveEnviarUmEmailParaCadaLeilao: dado que o repositório possui exatamente um leilão antigo, ao chamarEncerradorDeLeilao.encerra(), deve ser enviado exatamente um e-mail referente a esse leilão.deveContinuarSeDaoFalharNaAtualizacao: dado que o repositório possui dois leilões antigos, ao chamarEncerradorDeLeilao.encerra(), dado que ao atualizar os dados do primeiro leilão é lançada umaRuntimeException, o segundo leilão deve ser atualizado no repositório e deve ser enviado um e-mail referente ao segundo leilão, mas não ao primeiro leilão.
Script de correção
O script de correção do exercício está disponível para download: testa-mock-leilao.rb. Trata-se de um script escrito em Ruby, que deve ser executado na raiz do projeto Java. O script cria mutantes e executa os testes; espera-se que cada mutante provoque a falha de um teste.