Hashmap 与 AssertEquals 不匹配
Hashmap mismatch with AssertEquals
我已经编写了 JUnit 代码来测试 REST POST 调用。
@Test
public void testPOST_MAPOutput() throws IOException {
String url="https://reqres.in/api/register";
requestFields.put("email","eve.holt@reqres.in");
requestFields.put("password","pistol");
Map<String,Object> output=new HashMap<String, Object>();
output.put("id","4");
output.put("token","QpwL5tke4Pnpja7X4");
System.out.println(output);
assertEquals(output,restWebServices.doPostRequest(url,requestFields,httpHeaders, HashMap.class));
}
预期输出和实际输出似乎完全相等,但 JUnit 测试仍然失败。
Expected :java.util.HashMap<{id=4, token=QpwL5tke4Pnpja7X4}>
Actual :java.util.HashMap<{id=4, token=QpwL5tke4Pnpja7X4}>
查看您的代码,我很确定问题出在 Map<String, Object>
表示法上,您在其中使用 Object
作为值。因此,可能有一个 String
、一个数字(Integer
、Long
)或 字面上任何其他 ,只要它的 toString()
方法 returns "4"
你会看到相同的打印。
例如String
"4" 和Integer
4 将打印出相同的数字 - 4,但它们绝不相等!
考虑映射到更具体的 Object
类型,例如仅使用 String
,并在将结果添加到 Map
之前将服务器的结果转换为 String
用于比较。
我已经编写了 JUnit 代码来测试 REST POST 调用。
@Test
public void testPOST_MAPOutput() throws IOException {
String url="https://reqres.in/api/register";
requestFields.put("email","eve.holt@reqres.in");
requestFields.put("password","pistol");
Map<String,Object> output=new HashMap<String, Object>();
output.put("id","4");
output.put("token","QpwL5tke4Pnpja7X4");
System.out.println(output);
assertEquals(output,restWebServices.doPostRequest(url,requestFields,httpHeaders, HashMap.class));
}
预期输出和实际输出似乎完全相等,但 JUnit 测试仍然失败。
Expected :java.util.HashMap<{id=4, token=QpwL5tke4Pnpja7X4}>
Actual :java.util.HashMap<{id=4, token=QpwL5tke4Pnpja7X4}>
查看您的代码,我很确定问题出在 Map<String, Object>
表示法上,您在其中使用 Object
作为值。因此,可能有一个 String
、一个数字(Integer
、Long
)或 字面上任何其他 ,只要它的 toString()
方法 returns "4"
你会看到相同的打印。
例如String
"4" 和Integer
4 将打印出相同的数字 - 4,但它们绝不相等!
考虑映射到更具体的 Object
类型,例如仅使用 String
,并在将结果添加到 Map
之前将服务器的结果转换为 String
用于比较。