Java 如何使用多个参数化数据源

Java 如何使用多个参数化数据源,java,junit,parameterized,data-driven-tests,Java,Junit,Parameterized,Data Driven Tests,在Junit中使用 我想使用单独类中的两个字符串[](userId和account)。我知道这对TestData.usersString[]很有效,但我不确定如何让它也返回TestData.accountsString[]并对数据进行配对 目标是将每个用户ID和帐户配对到每个测试中 例如:test1使用user1和acct1执行测试,test2使用user2和acct2执行测试,依此类推 @RunWith(Parameterized.class) public class TestUpdateU

在Junit中使用

我想使用单独类中的两个字符串[](userId和account)。我知道这对
TestData.users
String[]很有效,但我不确定如何让它也返回
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
公共静态集合userPlusAccount(){
列表=新的ArrayList();

对于(inti=0;iYes),我在许多测试套件中使用了第二个概念,但希望找到一个更具弹性的解决方案(基于字符串数组的长度))。如果我将测试数据从8对减少到3对,我不希望必须更新测试类。这有意义吗?尝试类似于上面所述的方法,如果您在TestData上创建一个返回最小长度(帐户或用户数组长度)的方法会更好
@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]});
    }
}