测试-如何检查是否有东西被添加到HashMap



我有一个方法,只是简单地添加一些东西到hashmap。我的测试如下所示:

    Collection<SomeCollection> colelction = setUpConfluenceUsers();
    String group = "a";
    String group2 = "s";
    Parser collection = new ParserImpl();
    //when
    parser.map(group,users);

hashmap在类的顶部初始化。我想测试一下这是否有效。我只是不知道如何检查该列表是否包含期望的元素。检查这个方法是否会返回一些东西是很简单的。

现在我的解析器看起来像这样:

public static final String SEARCH_REGEX = "([\s>])@(\w+(?:[-\.]\w+)*)";
public static final int GROUP = 2;
private List<String> list = Lists.newArrayList();
Map hashMap = new HashMap<String, Collection<SomeCollection>>();

@Nonnull
@Override
public List<String> find(String body) {
    Pattern r = Pattern.compile(SEARCH_REGEX);
    Matcher matcher = r.matcher(body);
    MatchResultsIterable resultIterable = new MatchResultsIterable(matcher);
    for (MatchResult matchResult : resultIterable) {
        list.add(matchResult.group(GROUP));
    }
    return list;
}
@Nonnull
@Override
public String parse(String body) {
    return body;
}
@Override
public void map(@Nonnull String group, @Nonnull Collection<SomeCollection> users) {
    hashMap.put(group, users);
}

我想做一些断言来检查map是否正确工作。任何想法,代码片段将是很好的。

您没有显示您的解析器类是什么,但是一种解决方案是为该类创建一个仅测试的构造函数,并将映射的间谍或模拟传递给它;例如:

@Test
public void mapIsFilled()
{
    final Map<Foo, Bar> map = mock(Map.class);
    final Parser parser = new Parser(map);
    parser.whatever();
    very(map).put(...);
}
更精确的答案要求您发布解析器类的代码。

相关内容

  • 没有找到相关文章

最新更新