Я написал код, который фактически считывает данные из базы данных, а затем передает данные в 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