用于在数组中查找最大数的参数化 Junit 测试用例的预期值
Expected values for Parameterized Junit test case for finding Max number in an array
可以编写参数化 junit 测试来测试多个值。在这种情况下,期望值应该是多少?
我将要测试的值存储为列表,列表中的元素是测试数据的候选。
@RunWith(Parameterized.class)
public class MaxInArrayTest {
@Parameter
public int[] a1;
@Parameters
public static Collection<int[]> data(){
int[][] data = new int[][]{{1,2,3,4},{20,30,40,50}};
return Arrays.asList(data);
}
@Test
public void testMaxInArray(){
MaxInArray maxInArray = new MaxInArray();
Assert.assertEquals(maxInArray.findMax(a1), maxInArray.findMax(a1));
}
}
虽然这有效,但要计算预期值,它调用的是相同的方法。我想存储预期值,然后根据实际值检查它们。需要怎么做?
参数需要包含输入,还需要包含预期输出:
@RunWith(Parameterized.class)
public class MaxInArrayTest {
private static class ArrayAndExpectedMax {
private int[] array;
private int expectedMax;
public ArrayAndExpectedMax(int[] array, int expectedMax) {
this.array = array;
this.expectedMax = expectedMax;
}
public int[] getArray() {
return array;
}
public int getExpectedMax() {
return expectedMax;
}
}
@Parameterized.Parameter
public ArrayAndExpectedMax param;
@Parameterized.Parameters
public static Collection<ArrayAndExpectedMax> data(){
return Arrays.asList(new ArrayAndExpectedMax(new int[] {1, 2, 3, 4}, 4),
new ArrayAndExpectedMax(new int[] {20, 30, 40, 50}, 50));
}
@Test
public void testMaxInArray(){
MaxInArray maxInArray = new MaxInArray();
Assert.assertEquals(param.getExpectedMax(), maxInArray.findMax(param.getArray()));
}
}
可以编写参数化 junit 测试来测试多个值。在这种情况下,期望值应该是多少? 我将要测试的值存储为列表,列表中的元素是测试数据的候选。
@RunWith(Parameterized.class)
public class MaxInArrayTest {
@Parameter
public int[] a1;
@Parameters
public static Collection<int[]> data(){
int[][] data = new int[][]{{1,2,3,4},{20,30,40,50}};
return Arrays.asList(data);
}
@Test
public void testMaxInArray(){
MaxInArray maxInArray = new MaxInArray();
Assert.assertEquals(maxInArray.findMax(a1), maxInArray.findMax(a1));
}
}
虽然这有效,但要计算预期值,它调用的是相同的方法。我想存储预期值,然后根据实际值检查它们。需要怎么做?
参数需要包含输入,还需要包含预期输出:
@RunWith(Parameterized.class)
public class MaxInArrayTest {
private static class ArrayAndExpectedMax {
private int[] array;
private int expectedMax;
public ArrayAndExpectedMax(int[] array, int expectedMax) {
this.array = array;
this.expectedMax = expectedMax;
}
public int[] getArray() {
return array;
}
public int getExpectedMax() {
return expectedMax;
}
}
@Parameterized.Parameter
public ArrayAndExpectedMax param;
@Parameterized.Parameters
public static Collection<ArrayAndExpectedMax> data(){
return Arrays.asList(new ArrayAndExpectedMax(new int[] {1, 2, 3, 4}, 4),
new ArrayAndExpectedMax(new int[] {20, 30, 40, 50}, 50));
}
@Test
public void testMaxInArray(){
MaxInArray maxInArray = new MaxInArray();
Assert.assertEquals(param.getExpectedMax(), maxInArray.findMax(param.getArray()));
}
}