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

时间:2020-03-19 23:05:19

标签: java eclipse mockito junit5

我尝试在jUnit5上使用Mockito模拟List-Collection。

我尝试模拟以下集合:

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

我在Eclipse中收到警告: “类型安全:List类型的表达式需要未经检查的转换才能符合List”。

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

我很感谢任何线索。

1 个答案:

答案 0 :(得分:1)

您可以通过使用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 Extension,甚至可以摆脱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”(或您使用的任何版本)。