我使用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位插入空值。请帮我解决问题。
答案 0 :(得分:4)
在您的sharedLevel类中,更改:
for(int i=0; i <= sharefirstlevel.Actualvalues.length; i++)
为:
for(int i=0; i < sharefirstlevel.Actualvalues.length; i++)
由于您的计数器从0开始,它应该小于数组的长度。