2012-03-14 15 views
6

Trong hamcrest (1.3.RC2, không phụ thuộc JUnit) Tôi không sử dụng iterableWithSize().hamcrest Generics địa ngụC# 2: iterableWithSize cho errror "không áp dụng cho các đối số"

Tôi có một (mở rộng) một Iterator parametrized với Content như thế này EndResult<Content> contents = contentRepository.findAllByPropertyValue("title", "*content*");

nơi EndResultpackage org.springframework.data.neo4j.conversion; public interface EndResult<R> extends Iterable<R> {...}Content là một POJO tôi.

Bây giờ, tôi sẽ nghĩ rằng điều này sẽ làm việc assertThat(contents, iterableWithSize(1));

nhưng nó mang lại cho tôi những lỗi: Phương pháp assertThat (T, Matcher) trong các loại Khẳng định không áp dụng cho các đối số (EndResult < nội dung>, Matcher < Iterable < Object >>)

tôi cũng đã cố gắng những thất bại:

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

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

Đây là hàng nhập khẩu của tôi:

 

    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; 

Các hasSize cho bộ sưu tập các công trình như mong đợi, nhưng đối với tôi không thể lặp thậm chí tìm một ví dụ làm việc ...

Trả lời

13

Chỉ nên là

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

iterableWithSize được nhập vào loại thành phần trong số Iterable của bạn, không phải loại bê tông có thể lặp lại chính nó.

+0

Cảm ơn Mark - thực sự thời gian biên dịch its ok, nhưng khi thử nghiệm được chạy tôi nhận được java.lang.AssertionError: dự kiến: một iterable với kích thước <2> nhận:

+0

@Agelos: Sau đó, tôi đoán bạn nên sửa chữa mã của bạn hoặc kiểm tra của bạn! Tôi đã trả lời câu hỏi Hamcrest, bạn đã có một giả định sai hoặc một số mã bị hỏng. Tôi xin lỗi nhưng tôi không biết đủ về Spring để trả lời câu hỏi mới. –

+0

Nhưng vì EndResult mở rộng Iterable , điều gì khác có thể sai trong mã {next(); i ++} tầm thường? –

Các vấn đề liên quan