我的问题是我无法将哈希表数组转换为对象数组。这里的内容读取从 xls 文件中读取每一行,并将其以这种格式保存在哈希表数组中:
roleName=testRole981、admin=admin、projectName=Automateme、userPassword=aspiresys12、roleDesc=grant[testplan_execute]、grant[testplan_create_build]、grant[testplan_metrics]、adminPass=admin、userName=mur。
我想将该 hashTable 数组转换为对象数组,以便我可以将 testNG 测试用例中的这些数组作为 DataProvider 传递。
public class DriverScript {
//public boolean isExecuted = true;
Object[][] Obj = new Object[100][100];
@SuppressWarnings("unchecked")
@DataProvider(name="Test")
public Object[][] ValidDataProvider() {
Utilities util = new Utilities();
String pathValue = Utilities.LocatingXls("Data.xls");
Hashtable<String, String>[] hashDrv = (Hashtable<String, String>[]) util.contentReading(pathValue, "Scenario1");
Object[][] Obj = new Object[100][100];
for(int i=0;i<hashDrv.length;i++)
{
System.out.println("cont vector reading" + hashDrv[i].get("projectName"));
Obj[i][0] = hashDrv[i];
}
System.out.println("outsideloop" + Obj[0][0]);
return Obj;
}
@SuppressWarnings("unchecked")
@Test(dataProvider = "Test")
public void methodtest(Hashtable <String, String> a)
{
/* Utilities util = new Utilities();
String pathValue = Utilities.LocatingXls("Data.xls");
Hashtable<String, String>[] hashDrv = (Hashtable<String, String>[]) util.contentReading(pathValue, "Scenario1");
for(int i=0;i<hashDrv.length;i++)
{
System.out.println("cont vector reading" + hashDrv[i].get("projectName"));
Scenario1 scnTst=new Scenario1(hashDrv[i]);
scnTst.check1();
}
if(!isExecuted)
{
Assert.fail("falied");
}
}*/
}}
最佳答案
由于使用此数据提供程序的测试方法有一个参数,因此 Object[][]
数组的第二个维度应该是 1,而不是 100。也许类似于以下(未经测试)的代码:
@SuppressWarnings("unchecked")
@DataProvider(name="Test")
public Object[][] validDataProvider() {
Utilities util = new Utilities();
String pathValue = Utilities.LocatingXls("Data.xls");
Hashtable<String, String>[] hashDrv = (Hashtable<String, String>[])
util.contentReading(pathValue, "Scenario1");
Object[][] obj = new Object[hashDrv.length][1];
for(int i=0; i<hashDrv.length; i++) {
System.out.println("cont vector reading"
+ hashDrv[i].get("projectName"));
obj[i][0] = hashDrv[i];
}
System.out.println("outsideloop" + obj[0][0]);
return obj;
}
关于java - 将 Hashtable 数组转换为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3368952/