2016-06-08 66 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上工作。