首页 > 解决方案 > 自动化的 IndexOutOfBoundsException

问题描述

我正在尝试自动化应用程序。为此,我将哈希映射用于 excel 数据集,并且我已经创建了对这些数据执行操作的方法。

要执行的类文件如下所示

@Test
    public void testLAP_Creamix() throws Exception {
        try {
            launchMainApplication();

            Lapeyre_frMain Lapeyre_frMainPage = new Lapeyre_frMain(tool, test, user, application);

            HashMap<String, ArrayList<String>> win = CreamixWindowsDataset.main();
            SortedSet<String> keys = new TreeSet<>(win.keySet());

            for (String i : keys) {
                System.out.println("########### Test = " + win.get(i).get(0) + " ###########");
                Lapeyre_frMainPage.EnterTaille(win.get(i).get(1));
                Lapeyre_frMainPage.SelectCONFIGURATION(win.get(i).get(2));
                Lapeyre_frMainPage.SelectPLANVASQUE(win.get(i).get(3));
                Lapeyre_frMainPage.SelectCOULEUR(win.get(i).get(4));
                Lapeyre_frMainPage.SelectPOIGNEES(win.get(i).get(5));
                Lapeyre_frMainPage.SelectTYPE_DE_MEUBLE(win.get(i).get(6));
                Lapeyre_frMainPage.VerifyPanierPrice(win.get(i).get(7));
                Lapeyre_frMainPage.VerifyECO_PARTPrice(win.get(i).get(8));
                Lapeyre_frMainPage.ClickCREAMIXReinit();
                System.out.println("########### Test End ##############");
            }

            test.setResult("pass");
        } catch (AlreadyRunException e) {
        } catch (Exception e) {
            verificationErrors.append(e.getMessage());
            throw e;
        }

    }

哈希映射代码:

public static HashMap<String, ArrayList<String>> main() throws IOException {

        final String DatasetSheet = "src/test/resources/CreamixDataSet.xlsx";
        final String DatasetTab = "Creamix";

        Object[][] ab = DataLoader.ReadMyExcelData(DatasetSheet, DatasetTab);

        int rowcount = DataLoader.myrowCount(DatasetSheet, DatasetTab);
        int colcount = DataLoader.mycolCount(DatasetSheet, DatasetTab);

        HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();

        // i = 2 to avoid column names
        for (int i = 2; i < rowcount;) {
            ArrayList<String> mycolvalueslist = new ArrayList<String>();
            for (int j = 0; j < colcount;) {
                mycolvalueslist.add(ab[i][j].toString());
                j++;
            }
            map.put(ab[i][0].toString(), mycolvalueslist);
            i++;
        }

        return map;
    }

查询:几天前我能够运行此代码,但现在在添加了一些新列之后,它给了我下面提到的错误。IndexOutOfBoundsException 索引 7 超出长度 7 的范围

我无法在这里追踪问题,我应该寻找什么?请帮忙!

标签: javaeclipsearraylistindexoutofboundsexception

解决方案


        for (String i : keys) {
            arr = win.get(i);//debug here,watch it size
            Lapeyre_frMainPage.EnterTaille(arr.get(1));
            
            
        }

推荐阅读