1

我正在使用 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]);
        }
    }
}

但问题是在代码的第一部分中,正确的值被提取到数组中。在代码的第二部分中,当我传递数组值时,我获取的不是值,而是内存分配对象。因此测试用例失败。

请帮我。我正在修复!

4

2 回答 2

4

怎么用

assertTrue(Arrays.equals(expected, actual));

编辑:此答案适用于提出赏金的问题,而不是编辑后的问题(https://stackoverflow.com/posts/18334315/revisions

于 2013-08-22T14:14:43.600 回答
0

我解决了问题。我必须在 B 班做出的改变是

for(int i=1;i<sharefirstlevel.Actualvalues.length;i++){
  Log.d("Pratibha","Values are:"+sharefirstlevel.Actualvalues[i]);
  actual=solo.searchText(sharefirstlevel.Actualvalues[i]);
  assertEquals(expected, actual);
  Log.d("TAG","Values are:"+sharefirstlevel.Actualvalues[i]);
}

因此我得到了 B 类中数组的值。因为索引从 0 开始,并且我在第 0 位没有任何文本值,所以它返回了垃圾值。

感谢大家的回复。

于 2013-08-23T09:48:33.413 回答