148 votes

Comment affirmer plus que l'utilisation de JUnit Assert ?

J'ai ces valeurs provenant d'un test

previousTokenValues[1] = "1378994409108"
currentTokenValues[1] = "1378994416509"

et j'essaie

    // current timestamp is greater
    assertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]));

J'obtiens le java.lang.AssertionError y detailMessage sur le débogage est null .

Comment puis-je affirmer des conditions plus grandes que dans l'utilisation de la fonction JUnit

192voto

yshavit Points 15028

Juste comme vous l'avez fait. assertTrue(boolean) a également une surcharge assertTrue(String, boolean) où le String est le message en cas d'échec ; vous pouvez l'utiliser si vous voulez imprimer qu'untel n'était pas supérieur à untel.

Vous pouvez également ajouter hamcrest-all comme dépendance pour utiliser les matchers. Voir https://code.google.com/p/hamcrest/wiki/Tutorial :

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;

assertThat("timestamp",
           Long.parseLong(previousTokenValues[1]),
           greaterThan(Long.parseLong(currentTokenValues[1])));

Cela donne une erreur comme :

java.lang.AssertionError: timestamp
Expected: a value greater than <456L>
     but: <123L> was less than <456L>

29voto

Qwerky Points 10847

Lorsque j'utilise des assertions JUnit, je fais toujours en sorte que le message soit clair et net. Cela permet de gagner énormément de temps lors du débogage. En procédant ainsi, on évite d'avoir à ajouter une dépendance supplémentaire sur les Matchers hamcrest.

previousTokenValues[1] = "1378994409108";
currentTokenValues[1] = "1378994416509";

Long prev = Long.parseLong(previousTokenValues[1]);
Long curr = Long.parseLong(currentTokenValues[1]);
assertTrue("Previous (" + prev + ") should be greater than current (" + curr + ")", prev > curr);

17voto

user3293666 Points 168

Vous pouvez aussi essayer la solution simple ci-dessous :

previousTokenValues[1] = "1378994409108";
currentTokenValues[1] = "1378994416509";

Long prev = Long.parseLong(previousTokenValues[1]);
Long curr = Long.parseLong(currentTokenValues[1]);

Assert.assertTrue(prev  > curr );

12voto

嘉恒陶 Points 134

Vous devez ajouter Hamcrest-library à votre chemin de construction. Elle contient la classe Matchers.class nécessaire qui possède la méthode lessThan().

Dépendance comme ci-dessous.

<dependency>
  <groupId>org.hamcrest</groupId>
  <artifactId>hamcrest-library</artifactId>
  <version>1.3</version>
  <scope>test</scope>
</dependency>

4voto

Thanh Huy Le Points 49

Comme je le reconnais, pour le moment, dans JUnit, la syntaxe est comme ceci :

AssertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]), "your fail message ");

Cela signifie que la condition est en face du message.

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