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 EndResult
là package org.springframework.data.neo4j.conversion;
public interface EndResult<R> extends Iterable<R> {...}
và 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 ...
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: –
@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. –
Nhưng vì EndResult mở rộng Iterable , điều gì khác có thể sai trong mã {next(); i ++} tầm thường? –