Java android测试中的mock Gson().toJson

Java android测试中的mock Gson().toJson,java,android,mockito,gson,android-testing,Java,Android,Mockito,Gson,Android Testing,我正在为活动创建一个测试,其中有一行: Logger.i("Response", new Gson().toJson(response)); 它崩溃的消息: java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: web.services.Response. Forgot to register a type adapter? 我试图在测试中添加以下行,但没有帮助: Gson gson

我正在为活动创建一个测试,其中有一行:

Logger.i("Response", new Gson().toJson(response));
它崩溃的消息:

java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: web.services.Response. Forgot to register a type adapter?
我试图在测试中添加以下行,但没有帮助:

Gson gson = new GsonBuilder().registerTypeAdapter(mock(Response.class).getClass(), new ClassTypeAdapter()).create();
另外,我不能用powerMock来模拟Gson期末课程。
如何解决这个问题?

您可以创建自己的接口
IJsonParser
,并创建一个使用Gson的实现,您可以在应用程序中使用它。然后在测试中,您可以模拟您创建的接口,而不是最终的类。不幸的是,我无法修复代码。@KubaSpatny,我正在测试活动。我应该在哪里编写测试的实现?或者你想把主逻辑移到presenter并测试presenter?哦,我没有仔细阅读,我以为你是作为单元/仪器测试运行的。测试实现可以作为内部静态类写入测试活动中,以保持整洁。但是MVP或MVVM架构在测试时肯定会有所帮助。正如您所说,如果逻辑不是在活动中,而是在演示者中,您只需在您的计算机上本地将其作为单元测试运行即可。@KubaSpatny抱歉,我的问题出错了。问题是-如果我的所有代码都只在一个活动中,那么在哪里编写接口IJsonParser的实现?据我所知,我必须将它从我的活动中移开,因为它将包含Gson类。