【发布时间】:2017-07-05 13:14:54
【问题描述】:
我在主类中有这段代码 -
try {
extraPlayer = gson.fromJson(jsonResponse, ExtraPlayer.class);// this returns null
} catch (Exception e) {
e.printStacktrace();
}
这里extraPlayer 为空 我嘲笑过@Mock Gson gsonMock;
这里的ExtraPlayer是一个静态类。
我已经写了这个测试代码 -
@Test
public void test() {
String jsonResponse = "{\"status\":\"waiting\",\"no\":\"12\"}";
when(playerHandlerMock.resetPlayer("someString", "someString", "1",true
)).thenReturn(jsonResponse);
Gson gsonMock = PowerMockito.mock(Gson.class);
ExtraPlayer extraPlayer = new ExtraPlayer();
extraPlayer.setNo("12");
extraPlayer.setStatus("Waiting");
PowerMockito.mockStatic(ResetModemResponse.class); // using this for static class but didn't work.
PowerMockito.when(gsonMock.fromJson(jsonResponse, ExtraPlayer.class)).thenReturn(extraPlayer);
playerMock.performWaiting();
}
ExtraPlayer.java
public static class ExtraPlayer{
String no;
String status;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getNo() {
return code;
}
public void setNo(String no) {
this.no = no;
}
}
我已经在测试类中添加了这些注解-
@RunWith(PowerMockRunner.class)
@PrepareForTest(Gson.class)
为什么 extraPlayer 是 null ?请帮助/建议。
【问题讨论】:
-
如何将gson对象注入到被测类中?
-
gson 在主类中自动装配。在测试中我这样使用 - when(gsonMock.fromJson(jsonResponse, ExtraPlayer.class)).thenReturn(extraPlayer);
-
fromJson是静态方法吗? -
不,Gson.java 是最终类。 pkg 是 - 导入 com.google.gson.Gson;
-
@jaythakur 你找到上面的解决方案了吗
标签: unit-testing junit mockito powermockito