使用数组和常量值迭代 JUnit 测试用例
Iterate through JUnit Test Case with Array and Constant Value
我想创建一个 JUnit 测试用例,它为数组的每次迭代创建一个用例。我该怎么做呢?我看过一些关于 @Parameterized.Parameters
的文档,但似乎我需要重建我的原始数组以使其看起来像 {{array[0], constantValue}, {array[1], constantValue}}
。有什么方法可以让 JUnit 执行以下操作:
public class Testing {
String[] array;
String constantValue;
@Test
public void test_arrayValue0() {
assertEquals(array[0] + " is true", true, method(array[0], constantValue));
}
@Test
public void test_arrayValue1() {
assertEquals(array[1] + "is true", true, method(array[1], constantValue));
}
@Test
public void test_arrayValue2() {
assertEquals(array[2] + " is true", true, method(array[2], constantValue));
}
//..until array is complete
}
您需要使用数组值(以及可选的索引)对您的测试进行参数化:
@RunWith(Parameterized.class)
public class Testing {
private final static String constantValue = "myConstant";
@Parameters
public static Object[][] params() {
return new Object[][]{
new Object[] { "item0", 0 },
new Object[] { "item1", 1 },
//...
};
}
@Param(0)
public String arrayValue;
@Param(1)
public int arrayIndex;
@Test
public void test_arrayValue() {
assertEquals("array" + arrayIndex + " is true", true, method(arrayValue, constantValue));
}
}
然后您的 test_arrayValue 将被调用您提供的参数的次数,每次使用您指定的下一对索引和值。
或者,您可以只定义一个字段的数组:
private final String[] array = new String[] {"item0", "item1", ... }
然后仅使用索引参数化您的测试。
我想创建一个 JUnit 测试用例,它为数组的每次迭代创建一个用例。我该怎么做呢?我看过一些关于 @Parameterized.Parameters
的文档,但似乎我需要重建我的原始数组以使其看起来像 {{array[0], constantValue}, {array[1], constantValue}}
。有什么方法可以让 JUnit 执行以下操作:
public class Testing {
String[] array;
String constantValue;
@Test
public void test_arrayValue0() {
assertEquals(array[0] + " is true", true, method(array[0], constantValue));
}
@Test
public void test_arrayValue1() {
assertEquals(array[1] + "is true", true, method(array[1], constantValue));
}
@Test
public void test_arrayValue2() {
assertEquals(array[2] + " is true", true, method(array[2], constantValue));
}
//..until array is complete
}
您需要使用数组值(以及可选的索引)对您的测试进行参数化:
@RunWith(Parameterized.class)
public class Testing {
private final static String constantValue = "myConstant";
@Parameters
public static Object[][] params() {
return new Object[][]{
new Object[] { "item0", 0 },
new Object[] { "item1", 1 },
//...
};
}
@Param(0)
public String arrayValue;
@Param(1)
public int arrayIndex;
@Test
public void test_arrayValue() {
assertEquals("array" + arrayIndex + " is true", true, method(arrayValue, constantValue));
}
}
然后您的 test_arrayValue 将被调用您提供的参数的次数,每次使用您指定的下一对索引和值。
或者,您可以只定义一个字段的数组:
private final String[] array = new String[] {"item0", "item1", ... }
然后仅使用索引参数化您的测试。