Hamcrest泛型地狱#2:iterable With Size给出错误“不适用于参数”

时间:2012-03-14 18:03:07

标签: java generics testing junit hamcrest

在hamcrest(1.3.RC2,没有JUnit依赖项) 我没有使用iterableWithSize().

我有一个({1}} {扩展名}参数化Iterator就像这样 Content

EndResult<Content> contents = contentRepository.findAllByPropertyValue("title", "*content*");的位置 EndResult package org.springframework.data.neo4j.conversion; public interface EndResult<R> extends Iterable<R> {...}是我的Pojo。

现在,我认为这会奏效  Content

但它给了我错误: 方法断言(T,Matcher) 在Assert类型中不适用 对于论点 (EndResult&lt; Content&gt;,Matcher&lt; Iterable&lt; Object&gt;&gt;)

我也试过这些失败:

assertThat(contents, iterableWithSize(1));

assertThat(contents, iterableWithSize(equalTo(1));

这些是我的进口商品:


    import static org.hamcrest.CoreMatchers.equalTo;
    import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
    import static org.hamcrest.collection.IsIterableWithSize.iterableWithSize;
    import static org.junit.Assert.assertEquals;
    import static org.junit.Assert.assertThat;
    import org.hamcrest.collection.IsIterableWithSize;

集合的hasSize按预期工作,但对于迭代器,我甚至找不到一个有效的例子......

1 个答案:

答案 0 :(得分:13)

应该只是

assertThat(contents, IsIterableWithSize.<Content>iterableWithSize(1));

iterableWithSizeIterable组件类型上输入,而不是迭代本身的具体类型。