Java Junit Mokito始终返回空值

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

我想用mokito返回DAO的值,但它不能正常工作

它并不总是有效的

从下面的代码可以看出,它有时返回我想要的值,但有时不知道为什么

下面是我的代码示例

示例类

    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种方法,但它们都返回空值。