2011-07-16 6 views
1

私はAndroid開発だけでなく、テスト駆動開発にも新しいです。私は、次のListActivityのためのユニットテストを書きたい:ListActivityをテストするには?

public class TrendsMainActivity extends ListActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    String[] list_items = getResources().getStringArray(R.array.trend_menu_names); 
    setListAdapter(new ArrayAdapter<String>(this, R.layout.main, list_items)); 
} 

@Override 
protected void onListItemClick(ListView listView, View view, int position, long id) 
{ 
    Intent intent = null; 

    switch(position) 
    { 
     case 0: 
      intent = new Intent(this, TrendingActivity.class); 
      break; 
     case 1: 
      intent = new Intent(this, SearchActivity.class); 
      break; 
     case 2: 
      intent = new Intent(this, TimelineActivity.class); 
      break; 
    } 
    if(intent != null) 
    { 
     startActivity(intent); 
    } 
    else 
    { 
     Log.e(getClass().getSimpleName(), "There was an error retrieving request."); 
    } 
}} 

私は私が見つけることができるドキュメントのすべてを洗い上げてきたが、私はこの活動をテストする方法を見つけ出すことはできません。 onListItemClickメソッドは終了していませんが、私が達成したいことのアイデアを示します。 ListViewの最初の項目をクリックしてテストし、正しいActivityが開始されていることをテストします。

どうすればこの問題を解決できますか?

編集:ListViewの項目をテストするには、「クリック」します。リストア項目0がクリックすると、具体的にTrendingActivityが開始されます)

+0

「このアクティビティをテストする」とはどういう意味ですか?リストを含むアプリを実行しますか?またはコードをテストしますか? –

+0

私はコードを単体テストしたいです。 –

答えて

4

TDDを適用する場合は、アプリケーションではなくテストの作成が始まったはずです。

とにかく、Android Application Testing Guideは、第3章で2つの例を組み合わせると、あなたが探しているソリューションを提供することができます。考えられるのは、期待される活動が開始されたことを確認するためにActivityMonitorを使用することです。

@UiThreadTest 
public void testListItemClickStartsActivity() { 
    final Instrumentation inst = getInstrumentation(); 
    final IntentFilter intentFilter = new IntentFilter(); 
    // here add conditions to your filter, i.e. intentFilter.addAction() 
    ActivityMonitor monitor = inst.addMonitor(intentFilter, null, false); 
    assertEquals(0, monitor.getHits()); 
    // here perform desired click on list 
    monitor.waitForActivityWithTimeout(5000); 
    assertEquals(1, monitor.getHits()); 
    inst.removeMonitor(monitor); 
} 
+0

私は本を手に入れました。あなたはすばらしい仕事をしました。それは私のために非常に便利になるでしょう。私は元の質問をより具体的に編集しました。アクティビティやリストビューを正しく使用していない可能性があります。私は第3章の情報をまとめようとしましたが、開始されたアクティビティではなく、アクティビティが開始されたことを確認するように見えます。何か不足していますか? –

+1

フィルタが複数のアクティビティに一致する場合は、ActivityMonitor#getLastActivity()[http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html#getLastActivity()]を使用して一致するものを見つけることができます。 –

+0

リストビューをクリックする方法。 私はそれを行うには次のコードを使用しようとしましたが、失敗しました。 –

関連する問題