【问题标题】:Capture arguments of a static method call in Mockito在 Mockito 中捕获静态方法调用的参数
【发布时间】:2021-04-21 10:30:55
【问题描述】:

我正在尝试使用 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,但是可以使用PowerMockito吗?我认为这是相同的文物,所以也许不是。但如果它有效而你没有听说过,值得一试。
  • 也许有人可以给我正确的 Mockito 和 PowerMockito 版本组合以在 android 上运行,因为我遇到了不同组合的问题。
  • 我刚刚尝试搜索为什么你不能使用它并运行到这个页面。也许那里的解决方法会有所帮助。 stackoverflow.com/questions/15305490/…

标签: java android junit mockito


【解决方案1】:

这对我有用,用于在 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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多