我正在使用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
如何解决这个问题?谢谢!
答案 0 :(得分:1)
这不是问题。
参数化测试是关于使用多个输入测试完全相同的功能。这些应该是独立的,顺序无关紧要。