2016-06-08 12 views
6

Sto cercando un Hamcrest Matcher per i metodi di test unitari che restituiscono un tipo java.util.Optional. Qualcosa del tipo:C'è qualche Hamcrest Matcher per java.util.Optional?

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

Esiste qualche implementazione disponibile per il deposito di Maven?

+0

Perché non basta usare 'equalTo (...)'? –

+0

Esistono altri modi per testare l'oggetto. Ma in alcuni casi il matcher renderà la nostra vita più facile. Ad esempio, per affermare che un oggetto ha un bean con una proprietà Optional con un valore quando si desidera solo controllare alcuni campi. O se gli uguali hanno qualche implementazione speciale. – borjab

+0

Io non conosco bene il tuo caso, ma forse questa libreria potrebbe aiutarti: https://github.com/shazam/shazamcrest –

risposta

5

Attualmente Hamcrest utilizza la versione 1.6 ed è integrato con molti progetti che utilizzano la versione precedente di Java.

Quindi le funzionalità relative a Java 8 verranno aggiunte nelle versioni future compatibili con Java 8. La soluzione proposta era di avere una libreria di estensioni che la supporta, in modo che chiunque ne abbia bisogno possa utilizzare la libreria di estensioni.

Sono l'autore di Hamcrest Optional ed è ora disponibile su Maven central.

Esempio: Verificando l'opzionale contiene una stringa che inizia con un certo valore

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

Per il momento ho le seguenti informazioni:

  • C'è un issue e una proposta feature per sostenerla con Othe Java 8 tipi in loco hamcrest.
  • Un utente ne ha creato uno e pubblicato sul suo GitHub come esempio. Ancora non su Maven, ma lavorando su di esso.
Problemi correlati