我正在嘲笑一个抛出java.lang.IllegalArgumentException: Cannot subclass final class class.
以下是我所做的更改。
按照以下确切顺序在课程级别添加了以下注释:
@Runwith(PowerMockRunner.class)
@PrepareForTest({ Array1[].class, Array2[].class })
我正在课堂上这样做:
Array1[] test1= PowerMockito.mock(Array1[].class);
Array2[] test2= PowerMockito.mock(Array2[].class);
和内部测试方法:
Mockito.when(staticclass.somemethod()).thenReturn(test1);
Mockito.when(staticclass.somediffmethod()).thenReturn(test2);
基本上我需要模拟一个接口数组。 任何帮助将不胜感激。
答案 0 :(得分:5)
为您的问题开辟另一个视角:我认为您的单元测试错误。
您只能使用模拟框架来控制您提供给测试中的代码的个人对象的行为。但是嘲笑一些东西是没有意义的。
当您的课程正在测试时#34;需要处理一些数组,列表,地图等等,然后你提供一个数组,一个列表或一个映射 - 你只需要确保该数组/集合中的元素......就像你需要它们一样。也许数组对于一个测试是空的,也许它包含另一个测试的null,也许它包含一个用于第三次测试的模拟对象。
意义 - 你不做:
SomeInterface[] test1 = PowerMock.mock() ...
相反,你这样做:
SomeInterface[] test1 = new SomeInterface[] { PowerMock.mock(SomeInterface.class) };
并允许一些注释: