我有带有测试用例数据的excel表。每个测试用例可能包含一个或多个步骤。我想通过迭代excel(通过对每一行使用for循环)将测试用例的每个步骤的所有数据(3个字段)拉入Arraylist“TestStepsList”。一旦我检查新的测试用例是否已在excel中启动,我将所有步骤数据(Arraylist“TestSTepsList”)放入另一个数组TestCaseList中。所以TestCaseList是一个列表列表。
TestCaseID输入关键字 TC_01主窗口1 Menuitem_Verification TC_02 Configuration Manager-2_1 SubMenuitem_Verification-1 TC_02 Configuration Manager-2_2 SubMenuitem_Verification-2
代码如下:
for(int j=0;j<Total_Row;j++){
int total_Steps_TestCase =(int) test_Case_Data.get(curr_TCID);
List<String> TestStepsList = new ArrayList<>();
if (flag_CreateNewTC == 1) // Checking if we are on first step of the test case and need to create new list(TestSTepList)
{
TC_index = 1;
l = 0;
TestStepsList.add(0, curr_TCID);
TestStepsList.add(1, Curr_TCInput);
TestStepsList.add(2, Curr_TCKword);
if(TC_index ==((int) test_Case_Data.get(curr_TCID))) //Checking if test case is only single line. In such case we will add that testcase object(list to
//TestCase List)
{
seq=seq-1;
TestCaseList.add(seq,TestStepsList);
}
}
else //If a test case is multi step we will add all steps into TestSteplist till new test case begins
{
l=l+1;
TestStepsList.add(curr_TCID);
TestStepsList.add(Curr_TCInput);
TestStepsList.add(Curr_TCKword);
TC_index++;
if(TC_index ==((int) test_Case_Data.get(curr_TCID)))//If this is last step of existing test case then we need to add entry to TestCaseList List
{
seq=seq-1;
TestCaseList.add(seq, TestStepsList);
}
}
}
}
我面临的问题是单行测试用例输入正确地添加到TestCaselist中,但对于具有多个步骤的testccase,只添加了最后一行。例如,如果Testcase由3行组成,则仅添加最后一步
我认为最佳做法是每次将任何项目添加到列表时初始化列表对象,但在我的情况下,它不可能,因为我想在同一列表中添加多个步骤。
答案 0 :(得分:1)
我认为seq=seq-1
可能与它有关。如果我正确地阅读您的代码,您会继续将TestStepsList
推送到TestCastList
中的同一元素中。
如果您要添加到List
的末尾,请忽略index参数。否则,将索引参数更改为seq-1
并停止重新分配seq
。
TestCaseList.add(seq - 1, TestStepsList);
我不确定我是否遗漏了一些东西。
答案 1 :(得分:0)
List<String> TestStepsList = new ArrayList<>();
将其置于for
循环之外。
因为每次循环播放时都会创建一个新的ArrayList
。