junit参数化测试不按顺序输出结果

时间:2015-02-09 03:46:50

标签: java junit parameterized

我正在使用junit来测试具有不同参数的构造函数。代码运行正常。但输出结果是随机顺序。

public class Meetup {
public Meetup(int N) {
    if(N <= 0) { throw  new IllegalArgumentException();}
    System.out.println("Meetup is created !");
}

}

@RunWith(Parameterized.class)
public class MeetupTest {
    private int N;
    @Parameterized.Parameters
    public static List<Object[]> data(){
        return Arrays.asList(new Object[][]{
                {0},{1},{2},{-3},{4},{-5}
        });
    }    
    public MeetupTest(int N) {
        this.N = N;//break point
    }    
    @Test
    public void testMeetup(){
        System.out.println("parameter: " + N);
        new Meetup(N);
    }
}

如果我运行MeetupTest,我得到以下结果(随机序列):

parameter: 0
java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
parameter: 4
Meetup is created !
parameter: -5
java.lang.IllegalArgumentException
parameter: 1
Meetup is created !
parameter: 2
Meetup is created !
parameter: -3

这是我期望的结果。但是我必须在调试模式下运行代码(在此处设置断点.N = N)。

parameter: 0
java.lang.IllegalArgumentException
parameter: 1
Meetup is created !
parameter: 2
Meetup is created !
parameter: -3
java.lang.IllegalArgumentException
parameter: 4
Meetup is created !
parameter: -5
java.lang.IllegalArgumentException

如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:1)

这不是问题。

参数化测试是关于使用多个输入测试完全相同的功能。这些应该是独立的,顺序无关紧要。