如何使用参数化数据的多个来源
How to use multiple sources of parameterized data
在 Junit 中使用 Parameterized。
我想使用来自单独 class 的两个 String[](用户 ID 和帐户)。我知道这对 TestData.users
String[] 会很好用,但我不确定如何让 return TestData.accounts
String[] 和数据配对。
目标是将每个用户 ID 和帐户 配对到每个测试中。
例如:test1使用user1和acct1执行测试,test2使用user2和acct2执行测试,依此类推。
@RunWith(Parameterized.class)
public class TestUpdateUserAccounts extends Base {
private String userId;
private String account;
public TestUpdateUserAccounts(String userId, String account) {
this.userId = userId;
this.account = account;
}
@Parameters(name = "{0}")
public static Collection userPlusAccount() {
return Arrays.asList(TestData.users);
// NEED HELP HERE - HOW TO PAIR EACH TestData.accounts WITH EACH USER
}
@Test
public void checkUserAccount() {
//code here that will execute some steps
assertTrue(user.connectedToAccount(account));
}
在TestData.java
public static String[] users = { "user1", "user2", "user3", "user4", "user5" };
public static String[] accounts = { "acct1", "acct2", "acct3", "acct4", "acct5" };
我是不是漏掉了一些很明显的东西?预先感谢您的指导!
你可以这样做:
@Parameters
public static Collection userPlusAccount() {
return Arrays.asList(new Object[][] {
{ "user1", "acct1" },
{ "user2", "acct2" },
{ "user3", "acct3" },
{ "user4", "acct4" },
{ "user5", "acct5" }
});
}
或
@Parameterized.Parameters
public static Collection userPlusAccount() {
List<Object[]> list = new ArrayList<>();
for(int i = 0; i<TestData.getSize(); i++) {
list.add(new Object[]{TestData.users[i], TestData.accounts[i]});
}
}
更多信息请访问:
https://www.tutorialspoint.com/junit/junit_parameterized_test.htm
在 Junit 中使用 Parameterized。
我想使用来自单独 class 的两个 String[](用户 ID 和帐户)。我知道这对 TestData.users
String[] 会很好用,但我不确定如何让 return TestData.accounts
String[] 和数据配对。
目标是将每个用户 ID 和帐户 配对到每个测试中。
例如:test1使用user1和acct1执行测试,test2使用user2和acct2执行测试,依此类推。
@RunWith(Parameterized.class)
public class TestUpdateUserAccounts extends Base {
private String userId;
private String account;
public TestUpdateUserAccounts(String userId, String account) {
this.userId = userId;
this.account = account;
}
@Parameters(name = "{0}")
public static Collection userPlusAccount() {
return Arrays.asList(TestData.users);
// NEED HELP HERE - HOW TO PAIR EACH TestData.accounts WITH EACH USER
}
@Test
public void checkUserAccount() {
//code here that will execute some steps
assertTrue(user.connectedToAccount(account));
}
在TestData.java
public static String[] users = { "user1", "user2", "user3", "user4", "user5" };
public static String[] accounts = { "acct1", "acct2", "acct3", "acct4", "acct5" };
我是不是漏掉了一些很明显的东西?预先感谢您的指导!
你可以这样做:
@Parameters
public static Collection userPlusAccount() {
return Arrays.asList(new Object[][] {
{ "user1", "acct1" },
{ "user2", "acct2" },
{ "user3", "acct3" },
{ "user4", "acct4" },
{ "user5", "acct5" }
});
}
或
@Parameterized.Parameters
public static Collection userPlusAccount() {
List<Object[]> list = new ArrayList<>();
for(int i = 0; i<TestData.getSize(); i++) {
list.add(new Object[]{TestData.users[i], TestData.accounts[i]});
}
}
更多信息请访问: https://www.tutorialspoint.com/junit/junit_parameterized_test.htm