2013-07-01 4 views
8
import static org.junit.matchers.JUnitMatchers.both; 
import static org.junit.matchers.JUnitMatchers.containsString; 

Teraz sprawdzam zawiera foo i bar jak poniżej ...chcą JUnitMatchers AssertThat przetestować ciąg zawiera 3 lub więcej ciągów sub (obecnie za pomocą assertThat zarówno ... ... i ....)

 Assert.assertThat(text, 
      both(containsString("foo")). 
      and(containsString("bar"))); 

Co to jest najczystszy sposób sprawdzenia również sprawdź, czy zawiera 3 lub więcej ciągów np. "foo", "bar" i "baz"?

Odpowiedz

16

Zastosowanie AllOf

Assert.assertThat(test, CoreMatchers.allOf(
     containsString("foo"), 
     containsString("bar"), 
     containsString("bar2"), 
     containsString("ba3"))); 
2

nie wiem jak elegancki sposób w czystej JUnit, ale można spojrzeć na Fixtures for Easy Software Testing

Używam go od dłuższego czasu, a to sprawia, że ​​tak jak dużo łatwiej.

assertThat(text).contains("foo").contains("bar"); 
+0

+1 FEST/[AssertJ] (http://joel-costigliola.github.io/assertj/). Możesz użyć 'assertThat (text) .contains (" foo "," bar "," baz ");' - jest jeszcze bardziej zwięzły. – Jonathan