我认为你可以利用JUnit4的新功能来实现它。
编写一个规则,每次都执行@Before和@After:
JUnit Kungfu幻灯片34
编写一个参数化测试来计算结果:
JUnit Kungfu幻灯片23
如果你在使用电子表格,可以在电子表格中填入如下值:
current-value;expected-min;expected-max
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
import static org.junit.matchers.JUnitMatchers.*;
import java.util.Arrays;
import java.util.Collection;
import org.hamcrest.Matchers;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class ParameterizedTest {
private final int min;
private final int max;
private final int current;
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ -1 , -10, -6 },
{ -2 , -11, -7 },
{ -3 , -12, -8 },
{ -4 , -13, -9 },
{ -5 , -14, -10 }
});
}
public ParameterizedTest(int current, int expectedMin, int expectedMax) {
this.current = current;
this.min = expectedMin;
this.max = expectedMax;
}
@Test
public void testName() throws Exception {
int yourNewValue = YourNormalizer.normalize(current);
assertThat(yourNewValue, both(greaterThan(min)).and(lessThanOrEqualTo(max)));
}
}
我不知道其他测试数据的方法。HF