Mockito не может издеваться над окончательным решением класса

Java

MockitoЭто очень распространенный инструмент тестирования, и во время его использования могут возникнуть следующие проблемы:

Mockito cannot mock/spy because : - final class

Проблема воспроизводит:

Конфигурация maven, которая вводит эту зависимость в проект, выглядит следующим образом:

<dependency>
  <groupId>org.mockito</groupId>
  <artifactId>mockito-core</artifactId>
  <version>3.3.3</version>
</dependency>

Код теста выглядит следующим образом:

package com.pkslow.basic;

import org.junit.Assert;
import org.junit.Test;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class MockitoTest {

    public static final class FinalPumpkin {
        public String getName() {
            return "pkslow.com";
        }

    }

    @Test
    public void test() {
        FinalPumpkin pumpkin = mock(FinalPumpkin.class);
        when(pumpkin.getName()).thenReturn("www.pkslow.com");
        Assert.assertEquals("www.pkslow.com", pumpkin.getName());
    }
}

Сообщение об ошибке выглядит следующим образом:

org.mockito.exceptions.base.MockitoException: 
Cannot mock/spy class com.pkslow.basic.MockitoTest$FinalPumpkin
Mockito cannot mock/spy because :
 - final class

Это потому, что более низкая версияmockitoне можетmock finalКатегория.

решение:

Изменятьmockito, измените зависимость maven следующим образом:

<dependency>
  <groupId>org.mockito</groupId>
  <artifactId>mockito-inline</artifactId>
  <version>3.3.3</version>
</dependency>

Повторите тест, проблема решена!


Добро пожаловать в гостиТыквенный медленный разговор www.pkslow.comПолучайте больше отличных статей!

Добро пожаловать в публичный аккаунт WeChatТыква медленный разговор>, буду обновлять для вас...

Читайте больше, делитесь больше, пишите больше, организуйте больше.