JUnit assert, значение находится между двумя целыми числами

Мне нужно написать тест JUnit для написанного мной алгоритма, который выводит случайное целое число между двумя известными значениями.

Мне нужен тест JUnit (например, testEquals like test), который утверждает, что выведенное значение находится между этими двумя целыми числами (или нет).

т.е. У меня есть значения 5 и 10, выход будет случайным значением между 5 и 10. Если тест положительный, число было между двумя значениями, иначе это не так.

Ответ 1

@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);
}

Ответ 2

вы можете использовать метод junit assertThat (начиная с JUnit 4.4)

см. 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)));
}

Ответ 3

Вы также можете получить случай, когда один параметр является объектом, другой - примитивом, который также не работает, просто измените примитив на объект, и все готово.

Например:

Request.setSomething(2);// which is integer field
Integer num = Request.getSomething();

//while testing give the object i.e num 
assertEquals(Request.getSomething(),num);