CommentActivity
通常は のインスタンスを構築して使用するAndroid アクティビティをテストしたいと考えていますCommentsDataSource
(どちらも私が作成したクラスです)。
public class CommentActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
:
CommentsDataSource = new CommentsDataSource(..);
:
}
:
}
私はMockCommentsDataSource
自分で作成したいと考えており、サードパーティのモック フレームワークの使用を避けたいと考えています。(なぜですか?私は、学期に詰め込む必要がある情報の量と、生徒がインストールする必要のあるソフトウェアの量を削減しようとしているためです。Guice、roboguice、Spring を推奨する他の投稿を見たことがあります。)
私の質問は、アクティビティにCommentsDataSource
(または) を渡す方法です。それらをorにするのは実用的ではMockCommentsDataSource
ないようです。デバッグ フラグを簡単に渡すことはできますが、それを使用するにはについて知る必要があります。これは実際には (別のアプリケーションでは) 関係ありません。Serializable
Parcelable
Intent
CommentActivity
CommentActivity
MockCommentsDataSource
public class CommentActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
:
debugMode = getIntent().getBooleanExtra(DEBUG_MODE, false);
// Get a connection to the database.
final CommentsDataSource cds = (debugMode ?
new MockCommentsDataSource() : // Abstraction violation
new CommentsDataSource(this));
:
}
:
}
にどのように注入すればよいMockCommentsDataSource
ですCommentActivity
か? FWIW、私はEclipseを使用しており、最近のSDKバージョン用に開発しています。
私が思いつく解決策の 1 つは、抽象ファクトリ パターンを使用することです。ファクトリをシリアライズ可能にするのは比較的簡単だからです。私の制約を考えると、それが最善のアプローチですか?