2016-06-08 47 views
6

我正在尋找一個Hamcrest Matcher來返回一個java.util.Optional類型的單元測試方法。例如:java.util.Optional是否有任何Hamcrest Matcher?

@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()))); 
    } 

是否有任何可用的實現拋出Maven Repository?

+0

你爲什麼不只是使用'equalTo(...)'? –

+0

還有其他方法來測試對象。但在某些情況下,匹配器會讓我們的生活更輕鬆。例如,當您只想檢查某些字段時,斷言一個對象具有帶可選屬性和值的Bean。或者如果平等有一些特殊的實施。 – borjab

+0

我不太瞭解你的情況,但也許這個圖書館可以幫助你:https://github.com/shazam/shazamcrest –

回答

5

目前Java Hamcrest正在使用1.6版本,並與許多使用舊版Java的項目集成在一起。

因此,與Java 8相關的功能將被添加到將來與Java 8兼容的版本中。建議的解決方案是有一個支持它的擴展庫,以便任何需要的人都可以使用擴展庫。

我是Hamcrest Optional的作者,它現在在Maven central上可用。

實例:檢查是否可選包含字符串開始與一些價值

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

目前我有以下信息:

  • 有一個issuefeature建議與行吟詩人的Java 8種上hamcrest站點,以支持它。
  • 一個用戶創建了一個,並以他的GitHub爲例。仍然沒有在Maven上工作。
相關問題