我有以下3种方法。第一个叫第二个,第二个叫第三个。 junit测试失败,因为所有方法都是“无效”,并且我使用了一个对象来测试junit。
public class Ids
{
@PUT
@Path("/{otherId}")
@Produces("application/xml")
//First method:
public Response putTag
(
@Context SecurityContext context
, @Context HttpServletRequest req
, @Context HttpServletResponse resp
, @PathParam("otherId") String otherId
, @FormParam("userId") String userId
) {
Map<String, String> obj = new Hashtable<String, String>();
obj.put("userId", userId);
obj.put("otherId", otherId);
putTagMethod(obj);
return ResponseBuilder.buildResponse("Inserted tag records", MediaType.APPLICATION_XML);
}
//第二种方法
public void putTagMethod(Map<String, String> obj) {
String userId = obj.get("userId");
String entryId = obj.get("otherId");
try {
updateTag(userId, otherId);
} catch (java.sql.SQLException e) {
LOGGER.error("java.sql.SQLException: ", e);
e.printStackTrace();
}
}
//第三种方法
public static void updateTag(String userId, String otherId) throws PersistenceException, {
if (...some condition) {
throw new InvalidParameterException("blah blah blah");
}
SpecialData data = null;
//Update if found, else insert
if (dataList != null && dataList.size() > 0) {
data = dataList.get(0);
update(userId, otherId);
} else {
insert(userId, otherId);
}
如何编写Junit测试来测试&#39; Response putTag&#39;方法? 我写了这个(下面)junit,但它给出了错误(
@Test
public void testPutTag() throws Exception
{
Ids tags = new Ids();
Map<String,String> obj = new HashMap<String,String>();
String xml = tags.putTag(obj);
assertTrue("PUT", xml.equals(
"<result>insert</result>"));
}
我收到错误:
Incompatible types
required: Map<String, String>
found: void
问题是我需要分配&#39; xml&#39;返回类型,但我的所有方法都无效。
我该如何解决这个问题?
任何人都请指教......