编写我的Junit测试用例,如下所示。在运行测试用例时,没有得到任何此类方法错误。
ResponseObject res = initialized with some data;
ServiceImpl servie;
@Test
public void methidName(){
ResponseObject mockObject= Mockito.spy(new ResponseObject(data));
mockObject.setters() // more setters follows
doReturn(someretunObject).when(mockObject).somethod();
// calling actual method here now
service.transfor();
}
实际课程
ResponseOject {
List<JSONObject> jsonList;
......
}
ServiceImpl{
public SearchResponse transfor(SearchResponse response) {
JSONObject obj= new JSONObject(response.getConent());
JSONArray arr= (JSONArray) obj.get("RootNode");
ArrayList<JSONObject> list=new ArrayList<>();
for(int i=0i<arr.size();i++){
list.add(arr.get(i));
}
// doing some sorting here with the list
Collections.sort(list, comparator);
/**/ setting the sorted collection to response object as below**
response.setJsonList(list);
JSONObject obj= new JSONObject();
obj.put("rootNode", response.getJsonList);
// getting error in above line during Junit testcase run
}
}
问题陈述
Getting error at this point in actual method
obj.put("rootNode", response.getJsonList);
java.lang.NoSuchMethodError: org.json.JSONObject.put(Llava/lang/String;Ljava/lanf/
Collection;)Lorg/json/JSONObject
任何理由。我想念什么吗?
答案 0 :(得分:0)
您在调用您认为的方法吗?您的测试正在调用此方法:
service.transfor()
但是您的代码示例显示了此方法:
public SearchResponse transfor(SearchResponse response)
您显示的那个带有输入参数,但是您没有传递一个参数,因此看来您没有调用要测试的方法。如果这只是您发布的内容中的一个错误,那么您应该查看response.getJsonList
调用返回的模拟对象。如果返回的对象类型与obj.put
方法所需的类型不同,则可能会出现此错误。