Исключение нулевого указателя при последовательном выполнении тестового скрипта

Я автоматизирую продукт с помощью Robotium. В модуле я должен проверить полученные данные.

Для этого я использую этот код:

class sharefirstlevel {

    public void A {
        for(int k=1;k<=4;k+=2) {
            ExpectedResult = solo.clickInList(k);
            for (int i = 0; i < ExpectedResult.size(); i++) {
                Actualvalues[i] += ExpectedResult.get(i).getText().toString() + " ";
                solo.scrollListToLine(0, k);    
                ExpectedResult=solo.clickInList(1);
                Actualvalues[i] += ExpectedResult.get(i).getText().toString() + " ";
                ExpectedResult = solo.clickInList(2);
                Actualvalues[i]  += ExpectedResult.get(i).getText().toString() + " ";
                Log.d("xyz","Values of the Strings are"+Actualvalues[i].toString());    
            }
        }
    }
}

Его извлечение значений, выбранных в массив.

Теперь, когда он получен, для проверки я использую этот код:

class sharedLevel {
    public void B {
        for(int i=0; i <= sharefirstlevel.Actualvalues.length; i++) {
            Log.d("xyz","Values are:"+sharefirstlevel.Actualvalues[i]);
            actual=solo.searchText(sharefirstlevel.Actualvalues[i]);
            assertEquals(expected, actual);
            Log.d("xyz","Values are:"+sharefirstlevel.Actualvalues[i]);
        }
    }
}

Значения извлекаются в массив, а при печати правильные значения вставляются в массив и даже передаются другому классу.

Но выполнение тестового примера junit будет успешным только 1 или 2 раза. Но с тех пор я получаю исключение нулевого указателя. Помогите пожалуйста мне. Я в исправлении!!

Первое значение при вставке в сам ArrayList равно null. Вот код:

         for(int k=1;k<=4;k+=2) 
    {
        ExpectedResult = solo.clickInList(k);
        for (int i = 0; i < ExpectedResult.size(); i++) 
        {
            Actualvalues[i] += ExpectedResult.get(i).getText().toString() + " ";
            solo.scrollListToLine(0, k);    
            ExpectedResult=solo.clickInList(1);
            Actualvalues[i] += ExpectedResult.get(i).getText().toString() + " ";
            ExpectedResult = solo.clickInList(2);
            Actualvalues[i]  += ExpectedResult.get(i).getText().toString() + " ";

            Log.d(" ","Values of the Strings are"+Actualvalues[i].toString());  
        }
    }

Значение, вставляемое в первую строку самого цикла for, равно null. Отсюда и проблема.

Но я не понимаю, почему нулевое значение вставляется в 0-ю позицию. Пожалуйста, помогите мне с решениями.


person Priety    schedule 22.08.2013    source источник
comment
что говорит ваш логкэт?   -  person wyoskibum    schedule 22.08.2013
comment
Результат теста Junit говорит: исключение нулевого указателя   -  person Priety    schedule 23.08.2013


Ответы (1)


В вашем классе sharedLevel измените:

for(int i=0; i <= sharefirstlevel.Actualvalues.length; i++)

to:

for(int i=0; i < sharefirstlevel.Actualvalues.length; i++)

Поскольку ваш счетчик начинается с 0, он должен быть меньше длины вашего массива.

person wyoskibum    schedule 22.08.2013