231 votes

AssertContains sur les chaînes de jUnit

Existe-t-il un moyen plus agréable d'écrire dans jUnit?

 String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
 

354voto

Yishai Points 42417

Si vous ajoutez dans Hamcrest et JUnit4, vous pouvez faire:

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

Avec certaines importations statiques, cela semble beaucoup mieux:

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

Les importations statiques nécessaires seraient:

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

19voto

piotrek Points 2230

utilisez fest assert 2.0 autant que possible EDIT: assertj peut avoir plus d’affirmations (une fourchette)

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

11voto

Mike Rylander Points 1682

Utilisez hamcrest Matcher containsString()

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

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

Vous pouvez éventuellement ajouter un message d'erreur encore plus détaillé.

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

Posté ma réponse à une question en double ici

5voto

Robert Munteanu Points 31558

Utilisez la nouvelle syntaxe assertThat avec Hamcrest .

Il est disponible à partir de JUnit 4.4 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X