android 中私有成员列表<Integer> mTasks 的单元测试

Unit Testing for private member List<Integer> mTasks in android

我正在尝试为以下 class 编写单元测试用例。特别地,对于下面的 'isSumOfTaskWeightIsValid()' 方法。它有私人成员参与其中。您能否为此编写测试用例。我发现这很困难,因为该方法中的 'for loop' 在 'mTasks' 上循环。提前致谢。

Class TaskCard {

private List<Integer> mTasks = new ArrayList<>();
private boolean mIsGood;

public TaskCard(boolean isGood) { mIsGood = isGood}    

public void setUpListofTasks(DataBaseHelper db){
  mTasks.addAll(db.getTasks());
}

public boolean isSumOfTaskWeightIsValid(){
  int sum = 0;
  for(int taskWeight : mTasks)
  { sum += taskWeight;
  }
 return (sum>0 || mIsGood);
}

}

您可以使用 @Before 注释来填充您的 mTasks 列表,然后您可以调用您的 isSumOfTaskWeightIsValid 方法。您还需要在构造函数中设置 mIsGood 参数。这是一个示例测试 class。

private TaskCard taskCard;

@Before
public void initObjects() {
    taskCard = new TaskCard(...);  //True or False
    //Initialize DataBaseHelper here
    DataBaseHelper db = new DataBaseHelper();
    taskCard.setUpListofTasks(db);
}

@Test
public void testIsSumOfTaskWeightIsValid() {
    // Now your list is filled with the value you prove in @Before
    assertTrue(taskCard.isSumOfTaskWeightIsValid());       
}