我正在尝试参数化JUnit4测试,但我一直在接收IllegalArgumentExcpetion:错误的参数数量,尽管我已经对我的构造函数进行了三次检查。我的代码就像(请注意,变量在类的顶部定义为相同的类型):
Order
我的public class Order {
public Order(byte[] orders) {
id = orders[0];
coffee = orders[1];
cafeLatte = orders[2];
smoothie = orders[3];
iceCoffee = orders[4];
}
课程是
{{1}}
答案 0 :(得分:2)
让我们简单明了:
@RunWith(Parameterized.class)
public class OrderTest {
@Parameterized.Parameter
public Order order;
@Parameterized.Parameters
public static Collection<Order> orders() {
return Arrays.asList(
new Order(1, 1, 0, 0, 0),
new Order(2, 1, 1, 0, 0),
new Order(3, 1, 1, 1, 1),
new Order(14, 80, 127, 127, 127)
);
}
如果您对toString()
实施Order
方法,则可以将@Parameterized.Parameters
替换为@Parameterized.Parameters(name = "{index}: {0}")
,以便更好地了解当前测试的内容。
答案 1 :(得分:1)
您可以使用带框Byte
- s:
public OrderTest(Byte id, Byte coffee, Byte cafelatte, Byte smoothie, Byte iceCoffee) {
order = new Order(new byte[] {id, coffee, cafelatte, smoothie, iceCoffee});
}
@Parameters
public static Collection order() {
return Arrays.asList(new Byte[][] {
{1, 1, 0, 0, 0},
{2, 1, 1, 0, 0},
{3, 1, 1, 1, 1},
{14, 80, 127, 127, 127}
});
}