Java Junit Mokito始终返回空值
我想用mokito返回DAO的值,但它不能正常工作 它并不总是有效的 从下面的代码可以看出,它有时返回我想要的值,但有时不知道为什么 下面是我的代码示例 示例类Java Junit Mokito始终返回空值,java,junit,mocking,Java,Junit,Mocking,我想用mokito返回DAO的值,但它不能正常工作 它并不总是有效的 从下面的代码可以看出,它有时返回我想要的值,但有时不知道为什么 下面是我的代码示例 示例类 public Myclass { @Resource(name=userDao) UserDao userDao; @Resource(name=infoDao) InfoDao infoDao; public boolean checkUser
public Myclass {
@Resource(name=userDao)
UserDao userDao;
@Resource(name=infoDao)
InfoDao infoDao;
public boolean checkUserService(UserVo userVo){
int checkCnt = userDao.getUserCnt(userVo);
InfoVo infoVo = new InfoVo();
infoVo.setUserId(...);
infoVo.set....
....
Map<String,Object> userInfo = infoDao.getInfo(infoVo);
return true or false;
}
}
public UserDao {
public <T> int getUserCnt(T value){
}
}
public InfoDao {
public <T> Map<String,Object> getInfo(T vo){
...
}
}
公共Myclass{
@资源(名称=userDao)
UserDao UserDao;
@资源(名称=infoDao)
InfoDao InfoDao;
公共布尔checkUserService(UserVo UserVo){
int checkCnt=userDao.getUserCnt(userVo);
InfoVo InfoVo=新InfoVo();
infoVo.setUserId(…);
infoVo.set。。。。
....
Map userInfo=infoDao.getInfo(infoVo);
返回真或假;
}
}
公共用户道{
public int getUserCnt(T值){
}
}
公共信息道{
公共地图获取信息(T vo){
...
}
}
测试用例
@ExtendWith(MockitoExtension.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public MyclassTest{
@Mock
UserDao userDao ;
@Mock
InfoDao infoDao ;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public testCheckUserService()throws Exception{
UserVo userVo = new UserVo();
when(userDao.getUserCnt(userVo)).thenReturn(1); // This code works normally.
Map<String,Object> checkInfoMap = new HashMap<>();
checkInfoMap.put("name","abc");
InfoVo infoVo = new InfoVo();
//I expected the result to be checkInfoMap, but the empty value will be returned.
when(infoDao.getInfo(infoVo)).thenReturn(checkInfoMap);
//This code likewise always returns an empty value.
when(infoDao.getInfo(anything())).thenReturn(checkInfoMap);
//This code likewise always returns an empty value.
when(infoDao.getInfo(any(InfoVo.class))).thenReturn(checkInfoMap);
}
}
@ExtendWith(MockitoExtension.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
公共MyclassTest{
@嘲弄
UserDao UserDao;
@嘲弄
InfoDao InfoDao;
@以前
公共作废设置(){
initMocks(this);
}
@试验
公共testCheckUserService()引发异常{
UserVo UserVo=新的UserVo();
when(userDao.getUserCnt(userVo)).thenReturn(1);//此代码正常工作。
Map checkInfoMap=newhashmap();
checkInfoMap.put(“名称”、“abc”);
InfoVo InfoVo=新InfoVo();
//我希望结果是checkInfoMap,但将返回空值。
当(infoDao.getInfo(infoVo)),然后返回(checkInfoMap);
//这段代码同样总是返回一个空值。
when(infoDao.getInfo(anything())。然后return(checkInfoMap);
//这段代码同样总是返回一个空值。
when(infoDao.getInfo(any(InfoVo.class)),然后return(checkInfoMap);
}
}
当(userDao.getUserCnt(userVo))。然后返回(1);这段代码可以工作,但为什么它下面的代码不能工作?您是否只尝试了最后一段代码<代码>何时(infoDao.getInfo(any(InfoVo.class))。然后返回(checkInfoMap)代码>第一个可能不起作用,因为在测试中创建的
infoVo
与在代码中创建的不一样。因此,空表示空吗?不。返回一个空的非空值。您的代码看起来不错。您确定已包含所有相关部分吗?是否正在清除或重新初始化checkInfoMap
我尝试了上述3种方法,但它们都返回空值。您是否只尝试了最后一种方法<代码>何时(infoDao.getInfo(any(InfoVo.class))。然后返回(checkInfoMap)代码>第一个可能不起作用,因为在测试中创建的infoVo
与在代码中创建的不一样。因此,空表示空吗?不。返回一个空的非空值。您的代码看起来不错。您确定已包含所有相关部分吗?正在清除或重新初始化checkInfoMap
我尝试了上述3种方法,但它们都返回空值。