java - 将 Hashtable 数组转换为对象数组

标签 java testng

我的问题是我无法将哈希表数组转换为对象数组。这里的内容读取从 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/

相关文章:

java - JAX-WS 序列化为流

selenium-webdriver - 将驱动程序对象的单个实例传递给所有其他类(Testng 框架)

selenium - 使用gradle,testNG不能高效地并行调度测试

java - 如何从调用程序覆盖 TestNG 参数

java - ITestNGMethod 类型的方法compareTo(ITestNGMethod) 未定义

java - 在 TestNG(Selenium with Java)中运行测试套件后如何收集所有 System.out.print ("")结果

java - 计算字符串列表中的元音并打印计数

java.net.SocketException : Connection reset

Java 检查一个月中的天数并添加缺少的日期

java - 以编程方式创建的 View 显示不正确 (android)