2
respostas

[Dúvida] Erro no Mock

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Estou recebendo esse erro quando eu tento rodar o teste, já tinha adicionado o "mock-maker-inline" na classe "src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker" e o erro era "Mockito cannot mock/spy because : - final class", nas duas abordagens deu erro. Vi que eu posso instanciar o pet e o dto em vez de mockar mas queria fazer isso funcionar, tem alguma outra alternativa ?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas

Olá, Diego! Como vai?

O erro está relacionado ao fato de que o Mockito não consegue mockar classes finais. Mesmo após adicionar o "mock-maker-inline", o problema persiste. Aqui estão algumas alternativas que você pode tentar:

  1. Verifique as Dependências: Certifique-se de que todas as dependências do Mockito estão atualizadas no seu pom.xml. Você pode precisar das seguintes dependências:

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>5.11.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>5.11.0</version>
        <scope>test</scope>
    </dependency>
    
  2. Verifique o JDK: Algumas versões do JDK podem ter problemas com o Mockito e o mock-maker-inline. Tente usar uma versão diferente do JDK, como o OpenJDK 11, para ver se o problema persiste.

  3. Refatoração: Se possível, considere refatorar a classe Pet para não ser final, ou crie uma interface que Pet possa implementar. Isso pode permitir que você mocke a interface em vez da classe concreta.

  4. Testar com Instâncias Reais: Caso não seja possível contornar o problema com mocks, você pode instanciar objetos reais de Pet e SolicitacaoAdocaoDto para seus testes, embora isso possa não ser ideal para testes de unidade.

  5. Verifique as Configurações: Certifique-se de que o arquivo mockito-extensions/org.mockito.plugins.MockMaker está corretamente configurado e no caminho certo (src/test/resources).

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Obrigado pela Dica, Armano

Consegui resolver o problema de outra forma e gostaria apenas de deixar registrado caso seja a dúvida de outra pessoa.

No meu caso, eu consultei a versão do java na minha máquina (era o 17) através do terminal de comando:

java -version
javac- version

e a do projeto (era o 22) através do atalho do intellij (ctrl + alt + shift + S).

Essa diferença de versões estava gerando uma incompatibilidade, então aproveitei para atualizar o JDK da minha máquina para o 21 e atualizei o do projeto também para o 21 e o problema foi resolvido.