CodeGym/Cursos Java/Módulo 3/Projeto relacionado: teste e log

Projeto relacionado: teste e log

Disponível

Este programa é uma imitação de um hipódromo

Para começar, como no projeto anterior, crie uma bifurcação do repositório: https://github.com/CodeGymCC/hippodrome , e clone essa bifurcação você mesmo.

Sua tarefa é adicionar testes e registro.

Lista de testes obrigatórios

Na lista a seguir, cada item deve ser implementado como um método de teste separado. Ao criar nomes para métodos de teste, tente ser conciso, mas ao mesmo tempo, para que você possa entender aproximadamente o que exatamente está sendo testado neles. Por exemplo, compare estes dois resultados de teste:

No segundo caso, é mais difícil entender que tipo de teste não passou e você terá que consultar os logs.

1. Classe de cavalo:

  1. construtor
    • Verifique se, quando passado para o construtor como primeiro parâmetro IllegalArgumentException, será lançado null. Para fazer isso, use o método assertThrows;
    • Verifique se ao passar para o construtor como o primeiro parâmetro null, a exceção lançada conterá a mensagem "Nome não pode ser nulo.". Para fazer isso, você precisa obter uma mensagem da exceção capturada e usar o assertEquals;
    • Verifique se ao passar uma string vazia ou uma string contendo apenas caracteres de espaço em branco (espaço, tabulação, etc.) como o primeiro parâmetro para o construtor, IllegalArgumentException. Para testar com diferentes variantes de caracteres de espaço em branco, você precisa fazer o teste parametrizado;
    • Verifique se ao passar uma string vazia ou uma string contendo apenas caracteres de espaço em branco (espaço, tabulação, etc.)
    • Verifique se quando um número negativo é passado para o construtor como o segundo parâmetro, IllegalArgumentException;
    • Verifique se quando um número negativo for passado para o construtor como segundo parâmetro, a exceção lançada conterá a mensagem "Velocidade não pode ser negativa.";
    • Verifique se quando um número negativo é passado para o construtor como o terceiro parâmetro, IllegalArgumentException;
    • Verifique se ao passar um número negativo como terceiro parâmetro para o construtor, a exceção lançada conterá a mensagem "A distância não pode ser negativa.";
  2. método getName
    • Verifique se o método retorna a string que foi passada como primeiro parâmetro para o construtor;
  3. método getSpeed
    • Verifique se o método retorna o número que foi passado como segundo parâmetro para o construtor;
  4. método getDistance
    • Verifique se o método retorna o número que foi passado como terceiro parâmetro para o construtor;
    • Verifique se o método retorna zero se o objeto foi criado usando um construtor com dois parâmetros;
  5. método de movimento
    • Verifique se o método chama dentro do método getRandomDoublecom os parâmetros 0.2 e 0.9. Para fazer isso, você precisa usar MockedStaticseu método verify;
    • Verifique se o método atribui o valor da distância calculado pela fórmula: distance + speed * getRandomDouble(0.2, 0.9). Para fazer isso, você precisa bloqueá-lo getRandomDoublepara que ele retorne determinados valores que você precisa definir parametrizando o teste.

2. Classe Hipódromo:

  1. Construtor
    • Verifique se, quando passado para o construtor IllegalArgumentException, ;será lançado null;
    • Verifique se ao passar para o construtor null, a exceção lançada conterá a mensagem "Cavalos não podem ser nulos.";
    • Verifique se ao passar uma lista vazia para o construtor, ; será lançado IllegalArgumentException;
    • Verifique se ao passar uma lista vazia para o construtor, a exceção lançada conterá a mensagem "Cavalos não podem estar vazios.";
  2. método getHorses
    • Verifique se o método retorna uma lista que contém os mesmos objetos e na mesma ordem da lista passada ao construtor. Ao criar o objeto Hippodrome , passe uma lista de 30 cavalos diferentes para o construtor;
  3. método de movimento
    • Verifique se o método chama o método move em todos os cavalos. Ao criar o objeto Hippodrome, passe uma lista de 50 cavalos fictícios para o construtor e use o método verify.
  4. método getWinner
    • Verifique se o método retorna o cavalo com o maior valor de distância.

3. Classe principal

  1. método principal
    • Verifique se o método não é executado por mais de 22 segundos. Para fazer isso, use a anotação Timeout. Depois de escrever este teste, desative-o (use a anotação Disabled). Portanto, não levará tempo para executar todos os testes e, se necessário, poderá ser executado manualmente.

O que precisa ser registrado

1. Classe principal:

  1. Depois de criar o objeto hipódromo, adicione uma entrada como esta ao log:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. Depois de exibir as informações sobre os vencedores, adicione uma entrada como esta ao log:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Classe Hipódromo:

  1. Se null foi passado para o construtor, antes de lançar a exceção, adicione uma entrada como esta ao log:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. b. Se uma lista vazia foi passada para o construtor, antes de lançar a exceção, adicione uma entrada como esta ao log:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. No final do construtor, adicione uma entrada como esta ao log:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. Classe de cavalo:

  1. Se null for passado para o construtor em vez de um nome, antes de lançar a exceção, adicione uma entrada ao log como:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Se o nome passado para o construtor estiver vazio, antes de lançar a exceção, adicione uma entrada como esta ao log:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Se a velocidade passada para o construtor for menor que zero, antes de lançar a exceção, adicione uma entrada como esta ao log:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Se a distância passada para o construtor for menor que zero, antes de lançar a exceção, adicione uma entrada como esta ao log:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. No final do construtor, adicione uma entrada como esta ao log:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Os logs devem ser gravados no arquivo hippodrome.log , que deve estar localizado na raiz do projeto na pasta logs . Todos os dias o arquivo deve ser renomeado de acordo com o padrão hippodrome.2021-12-31.log e um novo hippodrome.log deve ser criado em seu lugar . Para fazer isso, use o anexador RollingFile . Nesse caso, os arquivos com mais de 7 dias devem ser excluídos. Para fazer isso, você pode usar uma construção como:

<DefaultRolloverStrategy>
    <Delete>
        <IfFileName/>
        <IfLastModified/>
    </Delete>
</DefaultRolloverStrategy>

Pesquisou no Google o que substituir em vez de três pontos.😊


Análise de projetos . Assista após a conclusão!

Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário