Java Junit测试中的资产错误

Java Junit测试中的资产错误,java,junit,mockito,powermock,easymock,Java,Junit,Mockito,Powermock,Easymock,我有一个函数,它接受JSON字符串并通过调用服务返回字符串 我正在使用google JSON builder public String getserviceresult() { Gson gson = new Gson(); HashMap h =new HashMap() //Adding some attributes in hashmap h.add("Id",request.getid()); h.add("sessionid",SessionUtils.getSessionId()

我有一个函数,它接受JSON字符串并通过调用服务返回字符串 我正在使用google JSON builder

public String getserviceresult()
{
Gson gson = new Gson();
HashMap h =new HashMap()
//Adding some attributes in hashmap

h.add("Id",request.getid());
h.add("sessionid",SessionUtils.getSessionId());
String expectedstring =service.getString(gson.toJson(hashmap))
}
我已经为此编写了单元测试,它已经成功地工作了 首先,我已经使用Powermock模拟了SessionUtils类和serviceclient类,现在测试函数getserviceresult

public validjsonstring="{\"id\":\"customerid\",\"sessionid\":,\"somessionid\"}"
public testfunc()
{
  expect(service.getString(validjsonstring)).andReturn("somestring").anyTimes();
PowerMock.replayAll();
assert("somestring",getserviceresult());
Powermock.verifyAll();

}
这段代码工作正常。问题是,当我将Hashmap中的键从sessionid更改为sessionid时,单元测试失败,给了我断言错误,getserviceresult函数返回null。服务没有任何问题,因为当我在没有运行单元测试的情况下运行该函数时,它会给我正确的结果,但当我将sessionid的hashmap中的键更改为sessionid模拟服务调用失败并返回null

你知道为什么这个奇怪的错误吗


错误:断言错误getserviceresult应为somestring,但当我将sessionid更改为sessionid时返回null

您是否仅在一个位置更改密钥,即仅在源代码或测试类中更改密钥。case可能是您的case中的一个问题。为什么,您必须更改sessionid字符串?那么,您更改了哪个会话ID?h.addsessionid或validjsonstring={\id\:\customerid\,\sessionid\?我想是第一个,但是你也有第二个吗?你能提供失败的代码吗?Saurabh我在getserviceresult函数和validjsonstring变量h.addsessionid,SessionUtils.getSessionId中更改了两个位置的会话id;更改为h.addsessionid,SeSessionUtils.getSessionId;和tesfunc我已将validjsonstring变量编辑为公共validjsonstring={\id\:\customerid\,\sessionId\:,\somessionid\}服务需要的变量。您是否更改SessionUtils.getSessionId以返回somessionid以外的内容,如somessionid?