0

この TestNG DataProvider メソッドに問題があります。このエラーが発生する理由を教えて、このクラスを修正するのを手伝ってもらえますか? 配列への挿入に問題があります。

私が得るエラーはあいまいです:

Caused by: java.lang.NullPointerException
    at tr.test.TestScript.createData(TestScript.java:55)

そして、ここに私のコードがあります:

@SuppressWarnings("resource")
@DataProvider(name = "addresses")
public Object[][] createData() {
    Object[][] objs = new Object[100][];
    CSVReader reader = null;
    try {
        reader = new CSVReader( new FileReader("input.csv"), ',' );
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    Object[] nextLine;
    int row = 0;
    try {
        while ( ( nextLine = reader.readNext() ) != null ) {
            System.out.println( "Adding test case " + (row+1) + ": " + nextLine[0] + ", " + nextLine[1] + ", " + nextLine[2] );
            objs[row][0] = nextLine[0]; //this is line #55
            objs[row][1] = nextLine[1];
            objs[row][2] = nextLine[2];
            row++;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    if ( objs == null ) {
        System.out.println("Error: Input file empty.");
        System.exit(0);
    }
    return objs;
}
4

1 に答える 1

0

初期化していないからですobjs。個人的には、ArrayList を作成し、次のようにします。

return list.toArray();

また、リストに追加する必要があるアイテムも初期化する必要があります。

ArrayList<Object[]> = new ArrayList<Object[]>();
...
Object[] foo = new Object[2];
foo[0] = nextLine[0];
foo[1] = nextLine[1];
foo[2] = nextLine[2];
System.out.println( "Adding test case " + (i+1) + ": " + a + ", " + c + ", " + s );
list.add(foo);

...
Object[][] objs = new Object[list.size()][];

for (int i = 0; i < objs.length; i++) {
    objs[i] = list.get(i);
}

return objs;
于 2012-07-19T06:37:40.240 に答える