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.