2 回答

TA貢獻(xiàn)1829條經(jīng)驗 獲得超6個贊
在調(diào)用方法中,你使用字符串.class[paramter]而不是Class[][parameterArray]。
無需為 Test2 創(chuàng)建其他對象.class已經(jīng)使用過@injectMocks只需在 invoke 方法中使用變量即可。
public class JunitTestCases{
@Mock
Test test;
@InjectMocks
Test2 test2;
@Test
public void Oncall{
MockitoAnnotations.initMocks(this);
Class<?>[] params = new Class<?>[]{String.class};
Method method=Test2.class.getDeclaredMethod("method",params);
method.setAccessible(true);
method.invoke(test2, "data");
}
}

TA貢獻(xiàn)1827條經(jīng)驗 獲得超9個贊
用于編寫測試的演示類
public class PowerMockDemo {
public Point callPrivateMethod() {
return privateMethod(new Point(1, 1));
}
private Point privateMethod(Point point) {
return new Point(point.getX() + 1, point.getY() + 1);
}
}
演示類 的測試類
@RunWith(PowerMockRunner.class)
@PrepareForTest(PowerMockDemo.class)
public class PowerMockDemoTest {
private PowerMockDemo powerMockDemoSpy;
@Before
public void setUp() {
powerMockDemoSpy = PowerMockito.spy(new PowerMockDemo());
}
@Test
public void testMockPrivateMethod() throws Exception {
Point mockPoint = mock(Point.class);
PowerMockito.doReturn(mockPoint)
.when(powerMockDemoSpy, "privateMethod", anyObject());
Point actualMockPoint = powerMockDemoSpy.callPrivateMethod();
assertThat(actualMockPoint, is(mockPoint));
}
}
添加回答
舉報