Mockito 中的类型安全问题 - 模拟集合

Problem with Type safety in Mockito - mocked collection

我尝试在 jUnit5 中使用 Mockito 模拟一个 List-Collection。

我尝试模拟以下集合:

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

我在 Eclipse 中收到警告: "Type safety: The expression of type List needs unchecked conversion to conform to List ".

我试图修复它,但我不确定软件框架的模拟是否存在结构性问题?有没有办法完全修复此警告,或者当我对集合进行模拟时,我是否必须接受未经检查的转换?

感谢您提供任何线索。

您可以通过使用 Mockito 的 @Mock 注释来解决模拟参数化类型的问题,例如像这样:

class MyTests {

    @Mock
    List<String> listOfStrings;

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

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

就是说,模拟一个 List 通常没有多大意义,但我猜你已经选择它作为任何参数化类型的示例。

如果您使用 Mockito 的 Jupiter 扩展,您甚至可以摆脱 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"(或您使用的任何版本)。