相关疑难解决方法(0)

Mockito:列出具有泛型的Matchers

Mockito提供:

when(mock.process(Matchers.any(List.class)));
Run Code Online (Sandbox Code Playgroud)

如何避免警告,如果process需要List<Bar>呢?

java generics warnings matcher mockito

160
推荐指数
3
解决办法
11万
查看次数

Mockito anyMapOf嵌套泛型

我试图验证具有以下签名的方法被调用:

public void process(Map<String, Set<String>> data) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

嵌套的参数化Set给我带来了困难.我可以使用any()匹配器来正确验证它,如下所示:

verify(dataProcessor).process(Matchers.<Map<String, Set<String>>> any());
Run Code Online (Sandbox Code Playgroud)

Mockito中所述:使用泛型参数进行验证虽然令人讨厌,但如果我直接静态导入Matchers.any并将其称为以下内容则无效:

verify(dataProcessor).process(<Map<String, Set<String>>> any())
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下,anyMapOf(clazz,clazz)似乎更合适.既然你不能做Set.class我不知道你会怎么做.以下不起作用,因为缺乏通用:

verify(dataProcessor).process(anyMapOf(String.class, Set.class));
Run Code Online (Sandbox Code Playgroud)

是否可以使用anyMapOf验证这种情况,还是应该坚持使用Matchers.<> any()?

java generics mocking mockito

12
推荐指数
1
解决办法
1万
查看次数

Mockito不允许Matchers.any()使用Integer.class

我正在尝试对此方法进行单元测试:

/**
     * finds all widget descriptions containing specified text
     * @param searchText
     * @return
     */
    @Transactional
    public List<Integer> returnWidgetIdsFromSearchWord(String searchText){
        List<Integer> widgetIds = new ArrayList<Integer>();
        MapSqlParameterSource args = new MapSqlParameterSource();

        try{
            widgetIds = (List<Integer>) jdbt.queryForList("SELECT idwidgets FROM descriptions "
                    + "WHERE descriptiontext LIKE '%"+ searchText + "%'", args, Integer.class);
        }catch(Exception e){

        }

        return widgetIds;
    }
Run Code Online (Sandbox Code Playgroud)

使用此JUnit测试:

@Test
    public void testReturnWidgetIdsFromSearchWord(){
        List<Integer> widgetIds = null;

        when(jdbt.queryForList(Matchers.anyString(), 
                Matchers.any(MapSqlParameterSource.class),
                 Matchers.any(Integer.class))).thenReturn(idList);

        widgetIds = (List<Integer>) dDao.returnWidgetIdsFromSearchWord("someText");

        assertEquals(widgetIds, idList);
    }
Run Code Online (Sandbox Code Playgroud)

我试过在没有Matcher的情况下使用Integer.class - 没有运气,因为它抱怨需要3个匹配器.有什么建议?谢谢

java junit matcher junit4 mockito

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×3

mockito ×3

generics ×2

matcher ×2

junit ×1

junit4 ×1

mocking ×1

warnings ×1