2009-07-07 9 views

Odpowiedz

191

Jeśli dodać w Hamcrest i JUnit4, można zrobić:

String x = "foo bar"; 
Assert.assertThat(x, CoreMatchers.containsString("foo")); 

z niektórymi importu statycznych, wygląda dużo lepiej:

assertThat(x, containsString("foo")); 

Statyczne import potrzebnych byłoby:

import static org.junit.Assert.assertThat; 
import static org.hamcrest.CoreMatchers.containsString; 
+0

Próbka kodu zawsze wygrywa :) – ripper234

+0

Nie kompiluje się :) – pjp

+5

Upewnij się, że używasz 'org.junit.Assert' versus' junit.framework.Assert', ponieważ ten drugi nie ma funkcji Hamcrest Matcher 'assertThat()' –

7

użyć fest assert 2.0 ilekroć to możliwe EDYTOWANIE: assertj może mieć więcej twierdzenia (widelec)

assertThat(x).contains("foo"); 
+0

To wygląda dużo lepiej niż zaakceptowana odpowiedź, płynne API ftw! – Jezor

6

Zastosowanie hamcrest Matcher containsString()

// Hamcrest assertion 
assertThat(person.getName(), containsString("myName")); 

// Error Message 
java.lang.AssertionError: 
Expected: a string containing "myName" 
    got: "some other name" 

Możesz dodać opcjonalny jeszcze bardziej szczegółowo komunikat o błędzie.

// Hamcrest assertion with custom error message 
assertThat("my error message", person.getName(), containsString("myName")); 

// Error Message 
java.lang.AssertionError: my error message 
Expected: a string containing "myName" 
    got: "some other name" 

Wysłany moją odpowiedź na pytanie duplikatu here

0

Innym wariantem jest

Assert.assertThat(actual, new Matches(expectedRegex)); 

Ponadto w org.mockito.internal.matchers istnieje kilka innych ciekawych dopasowujących, jak StartWith, Contains itp

0

Wypróbowałem wiele odpowiedzi na ten temat jest strona, nikt naprawdę działało:

  • org.hamcrest.CoreMatchers.containsString nie kompiluje, nie można rozwiązać metodą.
  • JUnitMatchers.containsString jest zdeprawowany (i odnosi się do CoreMatchers.containsString).
  • org.hamcrest.Matchers.containsString: NoSuchMethodError

Więc zatrzymał próbuje dokonać czytelnego kodu ładnie, ale użył prostego i praktycznego podejścia zamiast wymienionego w pytaniu.