【问题标题】:How to test a android project which includes edittext ,button and listview?如何测试一个包含edittext、button和listview的android项目?
【发布时间】:2014-11-08 12:54:25
【问题描述】:

我确实开发了一个 android 项目,其中包括 edittext 、 button 和 listview 。我有一个 mainActivity,其中在其布局中包含这些视图。当用户在 Edittext 上输入文本并单击按钮时,文本将转移到 listview。到这里,一切正常,我可以这样做。除此之外,我确实创建了由 ArrayAdapter 扩展的类,因为我想优化应用程序。我想用 1000 个文本等测试应用程序,多亏了这个,我可以优化我的适配器,但我不知道如何测试它?

public class TodoItemAdapter extends ArrayAdapter<TodoItem> {
int resource;
public TodoItemAdapter(Context context, int resource,List<TodoItem> objects) {
    super(context, resource ,objects);
    this.resource = resource ;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    TodoItem toDoItem = getItem(position);
    String toDoTask = toDoItem.task;
    String toDoDate = DateFormat.getDateInstance().format(toDoItem.enteringData );

    String inflaterService = Context.LAYOUT_INFLATER_SERVICE;
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(inflaterService);

    View toDoView = inflater.inflate(this.resource,null);
    TextView taskView = (TextView) toDoView.findViewById(R.id.tvTask);
    TextView dateView = (TextView) toDoView.findViewById(R.id.tvDate);

    taskView.setText(toDoTask);
    dateView.setText(toDoDate);

    return  toDoView;
}

}

public class MyActivity extends Activity {

private ArrayList <TodoItem> todoItems;
private TodoItemAdapter  todoArrayAdapter ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    final EditText etTodo = (EditText) findViewById(R.id.etTodo);
    Button btnAddTodo = (Button) findViewById(R.id.btnAddTodo);
    ListView lvTodoItems = (ListView) findViewById(R.id.todoListView);
    todoItems = new ArrayList<TodoItem>();// line1
    todoArrayAdapter = new TodoItemAdapter(this,R.layout.todoitem,todoItems) ;//line2
    lvTodoItems.setAdapter(todoArrayAdapter); //line3
    //line1,line2 and line3 apply ( DataSource -> Adapter -> AdapterView ) schema.

    btnAddTodo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            todoItems.add(new TodoItem(etTodo.getText().toString()));
            todoArrayAdapter.notifyDataSetChanged();
            etTodo.setText("");
        }
    });
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.my, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

}

【问题讨论】:

  • 我确实用一个简单的 for 循环测试了我的项目 for(int i = 0 ; i

标签: android listview testing android-listview android-edittext


【解决方案1】:

您可以使用 Espresso 编写 Android UI 测试,如下所示:

public void testAdapter() {
  for (int i = 0; i < 1000; i++) {
     onView(withId(R.id.etTodo))
       .perform(typeText("Todo #" + i));
     onView(withId(R.id.btnAddTodo))
       .perform(click());
  }
}

【讨论】:

    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多