回答:
まず、どのアプリケーションを実行しているかによって異なります。
ユーザーがアプリケーションをどのように使用するかについて、テキストまたは概略の説明を行う必要があります。考えられるすべてのシナリオを修正します。後でテストに使用する例を書き留めます。
機能に属するものと、変更可能な構成に属するものを決定します。シナリオから機能とデータエンティティを抽出します。
シナリオから、アプリが何であるかを決定します。それは、サービス、アクティビティ、ウィジェット、コンテンツプロバイダー、またはいくつかの異なるコンポーネントを含む複雑なシステムです。シナリオに対して決定をテストします。
複雑なシステムの場合、機能とデータエンティティをアプリケーションコンポーネントに分散します。コンポーネントとその内容(アクティビティまたはその他)のリストを作成します。
UIコンポーネントのリストを作成し、その機能の説明(まだHOWではない)を作成します。これらは、後でウィジェットとアクティビティ、またはフラグメントまたはレイアウトになります。
UIコンポーネントのドラフトレイアウトを作成します。簡単なパスを作成します。UIを見てください。シナリオに戻り、それらすべてをドラフトUIで再生します。すべてのUIコンポーネントとクラスは、パッケージまたはパッケージの1つの階層に配置されます。
データエンティティのリストを作成します。何に何が入るかを決定します。DBまたは異なるDBのコレクションまたはテーブルとしてそれらを計画します。それらをクラスとして作成し、パッケージの別の階層または別のパッケージに配置します。ここには、DBヘルパー(SQL by DBと通信するクラス)も配置します。
UIおよびデータエンティティにテストデータを入力して起動するためのテストクラス(JUNITまたはそれ以上のTestNG)を作成します。
アダプタは、親GroupViewでのみ使用されるため、パブリックである必要はありません。そのため、通常はアダプター用のファイルはありません。
すべてのグローバルを特別な静的クラスに入れないでください-それは悪い習慣です。あなたはコードと設定を混合しています。この非常に興味深いソリューションを使用してください。今のところ、Androidで知っている最高のものです。
構成データはリソースに配置する必要があります。それらの一部が複雑な場合は、XMLソースとパーサーを使用します。リソースデータのリーダーをグローバル変数にします。すべてが静的であるとは限りません!たとえば、メインのActivityインスタンスに属することができます。
コードで構成不可能な定数を使用しないでください!たぶん、あなたの名前だけ:-)。すべての定数は時々非定数になります。
一方、コードの一部が通常のJavaではなく、スクリプト -データと言語の混在である場合、データとコードを混在させることができます。
常にそうする:何かを書く-何かをバルクに接続する-この新しいものにテストを追加する-この新しいものをテストする-バルクをテストする-繰り返す 小さなステップのみ!
編集。テスト駆動開発を使用することもできます-適切なコードの前にテストを記述します。このように、コードの準備ができる前にテストを実行すると、二重のテストが行われます。したがって、テストが実際に不正なコードに反応するかどうかをチェックします。