Как получить объект карты в формате String и передать его поставщику данных - PullRequest
0 голосов
/ 12 июля 2020

Я написал код, который фактически считывает данные из базы данных, а затем передает данные в Dataprovider, который в дальнейшем используется в тестовом примере.

Вот мой фрагмент кода -

public class test{

// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/testdata";

// Database credentials
static final String USER = "root";
static final String PASS = "root";

@DataProvider(name = "dp")
public static Iterator<Object[]> getData() throws ClassNotFoundException, SQLException {
    Connection conn = null;
    Statement stmt = null;
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(DB_URL, USER, PASS);
    stmt = conn.createStatement();
    String sql = "SELECT * FROM sampledata";
    ResultSet rs = stmt.executeQuery(sql);
    ResultSetMetaData rsMetaData = rs.getMetaData();
    List<Map<String, List<Object>>> list = new ArrayList<Map<String, List<Object>>>();
    Map<String, List<Object>> resultMap = new LinkedHashMap<>();
    while (rs.next()) {
        for (int i = 1; i <= rsMetaData.getColumnCount(); i++) {
            String colName = rsMetaData.getColumnName(i);
            Object colValue = rs.getObject(i);
            if (resultMap.containsKey(colName)) {
                resultMap.get(colName).add(colValue);
            } else {
                List<Object> resultList = new ArrayList<>();
                resultList.add(colValue);
                resultMap.put(colName, resultList);
            }
        }
        list.add(resultMap);
    }
    Collection<Object[]> dp = new ArrayList<Object[]>();
    for (Map<String, List<Object>> map : list) {
        dp.add(new Object[] { map });
    }
    rs.close();
    conn.close();
    return dp.iterator();
}

@Test(dataProvider = "dp")
public void test1(Map<String, List<Object>> map) {
    System.out.println(map.get("UserName"));
    System.out.println(map.get("Pass"));
    System.out.println(map.get("Address"));

}

}

Вывод кода -

[test1, test2]
[test1pass, test2pass]
[test1add, test2add]
[test1, test2]
[test1pass, test2pass]
[test1add, test2add]

Проблема, с которой я столкнулся, заключается в том, что мне нужны данные в виде строк, и я получаю их в виде списка. Я знаю, как перебирать список, чтобы получить String, но я не уверен, в какой момент это сделать. Любые предложения помогут. Заранее благодарим.

Ожидаемый результат -

test1
test1pass
test1add
test2
test2pass
test2add
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...