0

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

4

1 回答 1

4

在您的 sharedLevel 类中,更改:

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

至:

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

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

于 2013-08-22T16:43:14.073 回答