web-dev-qa-db-fra.com

JUnit assert, la valeur est comprise entre deux entiers

Je dois écrire un test JUnit pour un algorithme écrit en sortie, qui génère un entier aléatoire entre deux valeurs connues.

J'ai besoin d'un test JUnit (c'est-à-dire un assertEquals like test) qui affirme que la valeur renvoyée est comprise entre ces deux entiers (ou non).

C'est à dire. J'ai les valeurs 5 et 10, la sortie serait une valeur aléatoire entre 5 et 10. Si le test est positif, le nombre était compris entre les deux valeurs, sinon ce n'était pas le cas.

12
DanMc
@Test
public void randomTest(){
  int random = randomFunction();
  int high = 10;
  int low = 5;
  assertTrue("Error, random is too high", high >= random);
  assertTrue("Error, random is too low",  low  <= random);
  //System.out.println("Test passed: " + random + " is within " + high + " and + low);
}
22
Simulant

vous pouvez utiliser la méthode junit assertThat (depuis JUnit 4.4)

voir http://www.vogella.com/tutorials/Hamcrest/article.html

import static org.hamcrest.CoreMatchers.allOf;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.lessThan;
import static org.junit.Assert.assertThat;

......

@Test
public void randomTest(){
    int random = 8;
    int high = 10;
    int low = 5;
    assertThat(random, allOf(greaterThan(low), lessThan(high)));
}
12
feilong

Vous pouvez également obtenir une casse comme un paramètre est un objet, une primitive, qui ne fonctionne pas, changez simplement la primitive en objet et vous êtes tous ensemble.

Par exemple: Request.setSomething (2); // qui est un champ entier Entier num = Request.getSomething ();

// pendant le test, donne l'objet num: assertEquals (Request.getSomething (), num);

0
Palash Khatri