J'ai ces valeurs provenant d'un test
previousTokenValues[1] = "1378994409108"
currentTokenValues[1] = "1378994416509"
et j'essaye
// current timestamp is greater
assertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]));
Je reçois le Java.lang.AssertionError
et le detailMessage
lors du débogage est null
.
Comment puis-je affirmer plus que des conditions dans l'utilisation de JUnit
Juste comment vous l'avez fait. assertTrue(boolean)
a également une surcharge assertTrue(String, boolean)
où String
est le message en cas d’échec; vous pouvez l'utiliser si vous voulez imprimer que tel ou tel n'était pas plus grand qu'un tel et tel.
Vous pouvez également ajouter hamcrest-all
en tant que dépendance pour utiliser des correspondants. 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>
Lors de l'utilisation de JUnit, je fais toujours le message bien et clairement. Cela fait gagner un temps considérable au débogage. En procédant ainsi, vous éviterez de devoir ajouter une dépendance supplémentaire à hamcrest Matchers.
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);
vous pouvez aussi essayer ci-dessous simple soln:
previousTokenValues[1] = "1378994409108";
currentTokenValues[1] = "1378994416509";
Long prev = Long.parseLong(previousTokenValues[1]);
Long curr = Long.parseLong(currentTokenValues[1]);
Assert.assertTrue(prev > curr );
Vous devriez ajouter Hamcrest-library à votre chemin de construction. Il contient le Matchers.class nécessaire qui a 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>
assertTrue("your message", previousTokenValues[1].compareTo(currentTokenValues[1]) > 0)
cela passe pour les valeurs précédentes> actuelles
Vous pouvez le mettre comme ça
assertTrue("your fail message ",Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]));
Si l'ajout d'une bibliothèque supplémentaire telle que hamcrest
n'est pas souhaitable, la logique peut être implémentée comme méthode d'utilitaire à l'aide de la dépendance junit
uniquement:
public static void assertGreaterThan(int greater, int lesser) {
assertGreaterThan(greater, lesser, null);
}
public static void assertGreaterThan(int greater, int lesser, String message) {
if (greater <= lesser) {
fail((StringUtils.isNotBlank(message) ? message + " ==> " : "") +
"Expected: a value greater than <" + lesser + ">\n" +
"But <" + greater + "> was " + (greater == lesser ? "equal to" : "less than") + " <" + lesser + ">");
}
}