连续执行测试脚本时出现空指针异常

时间:2013-08-22 16:18:49

标签: android testing robotium android-testing

我使用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位插入空值。请帮我解决问题。

1 个答案:

答案 0 :(得分:4)

在您的sharedLevel类中,更改:

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

为:

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

由于您的计数器从0开始,它应该小于数组的长度。