8 votes

JUnit assertEquals Changes String

J'ai un test JUnit qui est le suivant :

@Test
public void testToDatabaseString() {
  DateConvertor convertor = new DateConvertor();
  Date date = convertor.convert("20/07/1984:00:00:00:00");
  String convertedDate = convertor.toDatabaseString(date);

  assertEquals("to_date('20/07/1984:00:00:00:00', 'DD/MM/YYYY HH24:MI:SS')",convertedDate);
}

Le test échoue en déclarant :

org.junit.ComparisonFailure: expected:<to_date('20/07/1984[00:]00:00:00', 'DD/MM/YY...> but was:<to_date('20/07/1984[ ]00:00:00', 'DD/MM/YY...>

Il est particulièrement intéressant de savoir pourquoi la valeur attendue est :

to_date('20/07/1984[00:]00:00:00', etc...

lorsque ma chaîne littérale dans le test est clairement :

"to_date('20/07/1984:00:00:00:00', etc...

Quelqu'un peut-il l'expliquer ? Pourquoi ajoute-t-il "[00:]" ? J'apprécie votre aide.

15voto

Luke Woodward Points 20417

Les crochets soulignent la différence entre la chaîne attendue et la chaîne réelle.

JUnit a mis les crochets autour de l'élément :00 pour souligner que c'est ce qui se trouve dans la chaîne attendue et non dans la chaîne réelle. Il y a des crochets autour de l'espace dans la chaîne réelle pour la même raison.

4voto

Jon7 Points 3370

JUnit met simplement entre parenthèses les caractères de votre chaîne qui n'étaient pas égaux afin de faciliter la lecture. Votre assert cherche 4 séries de ":00" et votre variable n'a que 3 séries.

Comme indiqué dans cette question de l'OS ( Java : assertEquals(String, String) est-il fiable ? ), assertEquals appelle simplement la méthode .equals sur les objets que vous lui passez.

0voto

Kanisha Modi Points 29

Pour supprimer le crochet, vous devez rendre votre chaîne réelle compatible avec le résultat attendu. Pour cela, vous devez supprimer l'espace supplémentaire ou le nouvel interligne qui est le plus proche du crochet.

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