junit参数化测试不按顺序输出结果
junit parameterized test does not output result in sequence
我正在使用 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
这是我期待的结果。但我必须 运行 调试模式下的代码(在 this.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
如何解决这个问题?谢谢!
这不是问题。
参数化测试是关于使用多个输入测试完全相同的功能。这些应该是独立的,顺序无关紧要。
我正在使用 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
这是我期待的结果。但我必须 运行 调试模式下的代码(在 this.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
如何解决这个问题?谢谢!
这不是问题。
参数化测试是关于使用多个输入测试完全相同的功能。这些应该是独立的,顺序无关紧要。