Search code examples
javajunithamcrest

Best Way to Assert That Each String in a Collection Contains a Substring?


What is the best way to assert that each element in a collection of strings contains a particular substring?

Something like

List<String> list = Arrays.asList("xyfoobar", "foobarxy", "xyfoobarxy");

assertThat(list, eachElementContains("foobar")); // pass

Solution

  • A simple solution is to use hamcrest library. Please try :

    import static org.hamcrest.CoreMatchers.containsString;
    import static org.hamcrest.CoreMatchers.everyItem;
    
    import java.util.Arrays;
    import java.util.List;
    
    import org.junit.Test;
    
    public class MyTest {
    
        @Test
        public void test() {
            List<String> list = Arrays.asList("xyfoobar", "foobarxy", "xyfoobarxy");
            assertThat(list, (everyItem(containsString("foobar"))));
        }
    }