JUnit抛出IllegalArgumentException

时间:2016-05-23 15:16:40

标签: java junit

我正在尝试参数化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}}

2 个答案:

答案 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}
    });
}
相关问题