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Тыква медленный разговор>, буду обновлять для вас...
Читайте больше, делитесь больше, пишите больше, организуйте больше.