Хотите, чтобы JUnitMatchers AssertThat тестировала строку, содержащую 3 или более подстрок (в настоящее время используется assertThat и , и )

import static org.junit.matchers.JUnitMatchers.both;
import static org.junit.matchers.JUnitMatchers.containsString;

Теперь я проверяю, что он содержит foo и bar, как показано ниже...

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

Какой самый чистый способ проверить, также проверьте, содержит ли он 3 или более строк, например. «фу», «бар» и «баз»?


person k1eran    schedule 01.07.2013    source источник


Ответы (2)


Используйте AllOf

 Assert.assertThat(test, CoreMatchers.allOf(
      containsString("foo"),
      containsString("bar"),
      containsString("bar2"),
      containsString("ba3")));
person John B    schedule 01.07.2013

Я не знаю элегантного способа в чистом JUnit, но вы можете взглянуть на Fixtures for Easy Software Testing

Я использую его в течение довольно долгого времени, и это делает его намного проще.

assertThat(text).contains("foo").contains("bar");
person ssindelar    schedule 01.07.2013
comment
+1 FEST/AssertJ. Вы можете использовать assertThat(text).contains("foo", "bar", "baz"); - это еще более лаконично. - person Jonathan; 05.07.2013