2011年8月4日木曜日

Google App Engine for Java のデータストアAPIを利用するクラスをテスト駆動開発する(その11)

前回の投稿で、テスト駆動開発の利点として、
回帰テストが容易に出来る、ということを挙げました。

その実践・・・というわけでもないですが、
サンプルコードを修正してみましょう。
修正、といいますが、つまり、忘れていた点があったんです。

作成したEntitySearchクラスのコンストラクタが
実装されていませんでした。
引数が何も使われないままになっていたんですね。

引数が使われないまま放置されていたのに、
テストを実行してみると成功します。
この理由は、
EntitySearchクラスがLocalUnitTestSampleクラスの
内部クラスであることが原因です。

もし、EntitySearchクラスを内部クラスではなく、
別の独立したクラスとすると
コンパイルエラーとなります。

メソッドgetEntity()の内部で、
変数ds,kindName,propertyNameを解決できないはずです。

そこで、コンストラクタで渡された引数を
フィールドとして保持することにします。
private DatastoreService ds;

private String kindName;

private String propertyName;

public EntitySearch(DatastoreService ds, String kindName, String propertyName) {
 this.ds = ds;
 this.kindName = kindName;
 this.propertyName = propertyName;
}
フィールドds,kindName,propertyNameを宣言して、
コンストラクタで引数の値を代入します。

これで、メソッドgetEntity()でのコンパイルエラーが解消されます。

インストール不要・無料のKaede翻訳ツール:
http://kaedetrans.appspot.com/

0 件のコメント:

コメントを投稿