我需要为我编写的算法编写一个 JUnit 测试,该算法输出两个已知值之间的随机整数。
我需要一个 JUnit 测试(即一个类似 assertEquals 的测试),它断言输出的值在这两个整数之间(或不在这两个整数之间)。
即我有值 5 和 10,输出将是 5 到 10 之间的随机值。如果测试是正数,则数字在两个值之间,否则不是。
@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);
}
你可以使用junitassertThat
方法(因为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)));
}
您可能还会遇到一个情况,例如一个参数是对象,另一个是原始参数,这也不起作用,只需将原始参数更改为对象即可。
例如:
Request.setSomething(2);// which is integer field
Integer num = Request.getSomething();
//while testing give the object i.e num
assertEquals(Request.getSomething(),num);
您可以使用支持参数double
的版本:assertEquals
delta
assertEquals(double expected, double actual, double delta)
例子:
int random = 8;
int high = 10;
int low = 5;
assertEquals((high + low) / 2.0, random, (high - low) / 2.0);