@RunWith(Parameterized.class)
public class ParameterizedTestCase {
public String username;
public String password;
public int pin;
public ParameterizedTestCase(String username,String password, int pin){
this.username=username;
this.password=password;
this.pin=pin;
}
@Parameters
public static Collection<Object[]> getData(){
Object [][] testData = new Object [3][3];
testData [0][0] = "user1";
testData [0][1] = "user1pass";
testData [0][2] = 2345;
testData [1][0] = "user2";
testData [1][1] = "user2pass";
testData [1][2] = 6789;
testData [2][0] = "user3";
testData [2][1] = "user3pass";
testData [2][2] = 1234;
return Arrays.asList(testData);
}
}
@Test
public void loginTest(){
System.out.println("Login Test -- " + username + " -- " + password + "
-- " + pin);
}
上面的代码可以在JUnit4中进行参数化。
我想为另一组数据添加另一个构造函数和getData()
方法,以便在同一个类中进行参数化。
例如:
public ParameterizedTestCase(String city,String month, String Day, String year)
和public static Collection<Object[]> getData()
您可以在Junit4中使用多个构造函数来参数化测试数据吗?
我知道只要构造函数参数形成唯一的签名
,Java就允许多个构造函数我尝试但没有成功。
请指教。谢谢!
答案 0 :(得分:0)
据我所知,这是不可能的。但如果这不是问题,你可以尝试JUnitParams framework这似乎是你想要的。有两个概念here的简短描述,下面是您需要的摘要,取自项目的文档:
1)依赖
<dependency>
<groupId>pl.pragmatists</groupId>
<artifactId>JUnitParams</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
2)@RunWith(JUnitParamsRunner.class)
3)测试代码配置
简短版
@Test
@Parameters({
"17, false",
"22, true" })
public void personIsAdult(int age, boolean valid) throws Exception {
assertThat(new Person(age).isAdult(), is(valid));
}
长/复杂版
@Test
@Parameters(method = "adultValues")
public void personIsAdult(int age, boolean valid) throws Exception {
assertEquals(valid, new Person(age).isAdult());
}
private Object[] adultValues() {
return $(
$(13, false),
$(17, false),
$(18, true),
$(22, true)
);
}