Проблема с типом безопасности в Mockito - издевательская коллекция - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь смоделировать коллекцию списков с Mockito вдоль jUnit5.

Я пытаюсь смоделировать следующую коллекцию:

@Test public void testMock() { List<Integer> listMock = mock(List.class); }

Я получаю предупреждение в Eclipse: «Безопасность типов: для выражения типа List требуется преобразование без проверки для соответствия List».

Я пытался это исправить, но я не уверен, что существует структурная проблема с насмешками с программным обеспечением фреймворк? Есть ли способ исправить это предупреждение вообще, или я должен принять непроверенное преобразование, когда я делаю насмешку над коллекциями?

Я благодарен за любые подсказки.

1 Ответ

1 голос
/ 20 марта 2020

Вы можете обойти эту проблему насмешек параметризованных типов, используя аннотацию @Mock от Mockito, например, вот так:

class MyTests {

    @Mock
    List<String> listOfStrings;

    @BeforeEach
    void initMocks() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testMock() {
        listOfStrings.add("a String");
    }
}

Тем не менее, насмешка над List обычно не имеет большого смысла, но Я полагаю, вы выбрали это просто в качестве примера для любого параметризованного типа.

Если вы используете расширение Юпитера от Mockito, вы даже можете избавиться от метода initMocks():

@ExtendWith(MockitoExtension.class)
class MyTests {

    @Mock
    List<String> listOfStrings;

    @Test
    public void testMock() {
        listOfStrings.add("a String");
    }
}

Это потребует дополнительной зависимости, однако: "org.mockito: mockito-junit-jupiter: 3.2.4" (или любую версию, которую вы используете).

...