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"(或您使用的任何版本)。
我尝试在 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"(或您使用的任何版本)。