2009-07-07 2 views

ответ

191

Если добавить в 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; 
+0

Образец кода всегда выигрывает :) – ripper234

+0

Он не скомпилирован :) – pjp

+5

Убедитесь, что вы используете 'org.junit.Assert' по сравнению с' junit.framework.Assert', так как последний не имеет Hamcrest Matcher 'assertThat()' –

5

Используйте новый синтаксис assertThat вместе с Hamcrest.

Доступно начиная с JUnit 4.4.

7

fest assert 2.0 по возможности EDIT: assertj может иметь больше утверждения (развилка)

assertThat(x).contains("foo"); 
+0

Это выглядит намного лучше, чем принятый ответ, свободный API ftw! – Jezor

6

Использование 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

0

Другой вариант

Assert.assertThat(actual, new Matches(expectedRegex)); 

Кроме того, в org.mockito.internal.matchers есть некоторые другие интересные matchers, как StartWith, Contains и т.д.

0

Я пробовал много ответов на th не страница, никто не работал:

  • org.hamcrest.CoreMatchers.containsString не обобщать, не может решить метод.
  • JUnitMatchers.containsString лишен (и относится к CoreMatchers.containsString).
  • org.hamcrest.Matchers.containsString: NoSuchMethodError

Так что я перестал пытаться сделать хорошо читаемый код, но использовал простой и осуществимый подход, упомянутый в вопросе вместо.

Смежные вопросы