2016-06-08 21 views
6

Tôi đang tìm Hamcrest Matcher cho các phương thức thử nghiệm đơn vị trả về loại java.util.Optional. Một cái gì đó như:Có Hamcrest Matcher nào cho java.util.Optional không?

@Test 
    public void get__Null(){ 

     Optional<Element> element = Element.get(null);  
     assertThat(sasi , isEmptyOptional()); 
    } 

    @Test 
    public void get__GetCode(){ 

     Optional<Element> element = Element.get(MI_CODE);  
     assertThat(sasi , isOptionalThatMatches(allOf(hasproperty("code", MI_CODE), 
                 hasProperty("id", notNullValue()))); 
    } 

Có bất kỳ triển khai nào có sẵn để ném Kho lưu trữ Maven không?

+0

Tại sao bạn không chỉ sử dụng 'equalTo (...)'? –

+0

Có nhiều cách khác để kiểm tra đối tượng. Nhưng trên một số trường hợp, người so sánh sẽ làm cho cuộc sống của chúng ta dễ dàng hơn. Ví dụ, để khẳng định rằng một đối tượng có một bean với một thuộc tính tùy chọn với một giá trị khi bạn chỉ muốn kiểm tra một số trường. Hoặc nếu bằng có một số thực hiện đặc biệt. – borjab

+0

Tôi không biết trường hợp của bạn đủ tốt, nhưng có thể thư viện này có thể giúp bạn: https://github.com/shazam/shazamcrest –

Trả lời

5

Hiện tại Java Hamcrest đang sử dụng phiên bản 1.6 và được tích hợp với nhiều dự án sử dụng phiên bản Java cũ hơn.

Vì vậy, các tính năng liên quan đến Java 8 sẽ được thêm vào trong các phiên bản tương lai tương thích với Java 8. Giải pháp được đề xuất là có một thư viện mở rộng hỗ trợ nó, để bất cứ ai cần có thể sử dụng thư viện mở rộng.

Tôi là tác giả của Hamcrest Optional và hiện đã có trên trung tâm Maven.

Ví dụ: Kiểm tra nếu bắt buộc chứa một chuỗi bắt đầu với một số giá trị

import static com.github.npathai.hamcrestopt.OptionalMatchers.hasValue; 
import static org.hamcrest.Matchers.startsWith; 

Optional<String> optional = Optional.of("dummy value"); 
assertThat(optional, hasValue(startsWith("dummy"))); 
2

Đối với thời điểm tôi có các thông tin sau:

  • Có một issuefeature đề nghị để hỗ trợ nó với Othe Java 8 loại trên trang web hamcrest.
  • Một người dùng đã tạo một tài khoản và đăng trên GitHub làm ví dụ. Vẫn không phải trên Maven nhưng làm việc trên nó.
Các vấn đề liên quan