在 Mockito 中捕获静态方法调用的参数
Capture arguments of a static method call in Mockito
我正在尝试使用 Mockito 在 android studio 中对方法调用进行单元测试。它是这样的:
public static class DeviceMessageHandler extends Handler {
public DeviceMessageHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
try {
switch (msg.what) {
default:
String message = (String) msg.obj;
DeviceRequest deviceRequest = new Gson().fromJson(message, DeviceRequest.class);
String requestType = deviceRequest.getKey();
if (DeviceMessage.SOME_ACTION.equals(requestType)) {
sendResponseWithMessage(execId, COMMAND_STATE, "Not accepted");
}
}
}
}
}
public static void sendResponseWithMessage(String execId, String commandState, String reasonIfAny) {
// do some work
} catch (Exception e) {
e.printStackTrace();
}
}
所以在这里我可以调用 sendResponsewithMessage。我想检查调用此方法时传递的参数。问题是它是一个静态方法,我不知道如何捕获传递给静态方法的参数。我尝试使用 PowerMock,但由于这是一个 android 项目,我无法使用 PowerMock。我可以用任何方式断言在方法调用上传递的参数具有预期值吗?
这对我有用,适用于 android 中的 运行 PowerMock:
testImplementation 'org.mockito:mockito-core:3.7.7'
androidTestImplementation 'org.mockito:mockito-android:2.7.22'
testImplementation 'org.powermock:powermock-module-junit4:2.0.9'
testImplementation group: 'org.mockito', name: 'mockito-all', version: '2.0.2-beta'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.9.0'
testImplementation group: 'org.powermock', name: 'powermock-api-mockito2', version: '2.0.9'
我正在尝试使用 Mockito 在 android studio 中对方法调用进行单元测试。它是这样的:
public static class DeviceMessageHandler extends Handler {
public DeviceMessageHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
try {
switch (msg.what) {
default:
String message = (String) msg.obj;
DeviceRequest deviceRequest = new Gson().fromJson(message, DeviceRequest.class);
String requestType = deviceRequest.getKey();
if (DeviceMessage.SOME_ACTION.equals(requestType)) {
sendResponseWithMessage(execId, COMMAND_STATE, "Not accepted");
}
}
}
}
}
public static void sendResponseWithMessage(String execId, String commandState, String reasonIfAny) {
// do some work
} catch (Exception e) {
e.printStackTrace();
}
}
所以在这里我可以调用 sendResponsewithMessage。我想检查调用此方法时传递的参数。问题是它是一个静态方法,我不知道如何捕获传递给静态方法的参数。我尝试使用 PowerMock,但由于这是一个 android 项目,我无法使用 PowerMock。我可以用任何方式断言在方法调用上传递的参数具有预期值吗?
这对我有用,适用于 android 中的 运行 PowerMock:
testImplementation 'org.mockito:mockito-core:3.7.7'
androidTestImplementation 'org.mockito:mockito-android:2.7.22'
testImplementation 'org.powermock:powermock-module-junit4:2.0.9'
testImplementation group: 'org.mockito', name: 'mockito-all', version: '2.0.2-beta'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.9.0'
testImplementation group: 'org.powermock', name: 'powermock-api-mockito2', version: '2.0.9'