2009-07-07 14 views

Respuesta

191

Si se agrega en Hamcrest y junit4, se podría hacer:

String x = "foo bar"; 
Assert.assertThat(x, CoreMatchers.containsString("foo")); 

Con algunas importaciones estáticas, se ve mucho mejor:

assertThat(x, containsString("foo")); 

Las importaciones estáticas necesarias serían:

import static org.junit.Assert.assertThat; 
import static org.hamcrest.CoreMatchers.containsString; 
+0

Un ejemplo de código siempre gana :) – ripper234

+0

No compila :) – pjp

+5

Asegúrate de estar usando 'org.junit.Assert' contra' junit.framework.Assert', ya que este último no tiene el Hamcrest Matcher 'assertThat()' –

5

utilizar la nueva sintaxis assertThat junto con Hamcrest.

Está disponible a partir de JUnit 4.4.

7

use fest assert 2.0 siempre que sea posible EDIT: assertj puede tener más afirmaciones (un tenedor)

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

Esto se ve mucho mejor que la respuesta aceptada, con fluidez API ftw! – Jezor

6

Uso Matcher hamcrest containsString()

// Hamcrest assertion 
assertThat(person.getName(), containsString("myName")); 

// Error Message 
java.lang.AssertionError: 
Expected: a string containing "myName" 
    got: "some other name" 

Puede opcional añadir un mensaje aún más detalles de error.

// 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" 

publicado mi respuesta a una pregunta duplicado here

0

Otra variante es

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

Por otra parte, en org.mockito.internal.matchers hay algunos otros comparadores interesantes, como StartWith, etc. Contains

0

He intentado muchas respuestas en th está página, ninguno realmente funcionó:

  • org.hamcrest.CoreMatchers.containsString no compila, no puede resolver método.
  • JUnitMatchers.containsString se depricated (y se refiere a CoreMatchers.containsString).
  • org.hamcrest.Matchers.containsString: NoSuchMethodError

Así que dejó de tratar de hacer que el código legible muy bien, sino que se utiliza el enfoque simple y viable mencionado en la pregunta en su lugar.