Czy istnieje ładniejsze sposób pisać w JUnitAssertContains na smyczki w JUnit
String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
Czy istnieje ładniejsze sposób pisać w JUnitAssertContains na smyczki w JUnit
String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
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;
użyć fest assert 2.0 ilekroć to możliwe EDYTOWANIE: assertj może mieć więcej twierdzenia (widelec)
assertThat(x).contains("foo");
To wygląda dużo lepiej niż zaakceptowana odpowiedź, płynne API ftw! – Jezor
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
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
Wypróbowałem wiele odpowiedzi na ten temat jest strona, nikt naprawdę działało:
Więc zatrzymał próbuje dokonać czytelnego kodu ładnie, ale użył prostego i praktycznego podejścia zamiast wymienionego w pytaniu.
Próbka kodu zawsze wygrywa :) – ripper234
Nie kompiluje się :) – pjp
Upewnij się, że używasz 'org.junit.Assert' versus' junit.framework.Assert', ponieważ ten drugi nie ma funkcji Hamcrest Matcher 'assertThat()' –