Есть ли способ лучше писать в JUnitAssertContains на строках в JUnit
String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
Есть ли способ лучше писать в JUnitAssertContains на строках в JUnit
String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
Если добавить в Hamcrest и JUnit4, вы могли бы сделать:
String x = "foo bar";
Assert.assertThat(x, CoreMatchers.containsString("foo"));
С некоторым статическим импортом, он выглядит намного лучше:
assertThat(x, containsString("foo"));
Статичные импорт нужен будет:
import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.containsString;
fest assert 2.0 по возможности EDIT: assertj может иметь больше утверждения (развилка)
assertThat(x).contains("foo");
Это выглядит намного лучше, чем принятый ответ, свободный API ftw! – Jezor
Использование Hamcrest Сличитель containsString()
// Hamcrest assertion
assertThat(person.getName(), containsString("myName"));
// Error Message
java.lang.AssertionError:
Expected: a string containing "myName"
got: "some other name"
Вы можете по желанию добавить еще сообщение об ошибке. подробнее
// 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"
Сообщение мой ответ на дублирующий вопрос here
Другой вариант
Assert.assertThat(actual, new Matches(expectedRegex));
Кроме того, в org.mockito.internal.matchers
есть некоторые другие интересные matchers, как StartWith
, Contains
и т.д.
Я пробовал много ответов на th не страница, никто не работал:
Так что я перестал пытаться сделать хорошо читаемый код, но использовал простой и осуществимый подход, упомянутый в вопросе вместо.
Образец кода всегда выигрывает :) – ripper234
Он не скомпилирован :) – pjp
Убедитесь, что вы используете 'org.junit.Assert' по сравнению с' junit.framework.Assert', так как последний не имеет Hamcrest Matcher 'assertThat()' –