開発スピード3倍のプログラミングテクを習得せよ
前回はTDD(テスト駆動開発)の簡単な説明をしました。TDDでプログラムを作るのは、欧米では当たり前です。それは、EclipseにTDDのツールであるJUnit、Visual StudioにもUnit機能が組み込まれていることからも明白です。JUnitなんて名前しか知らないという人は、使い方を覚えればいいだけです。知らないから使えないと言ってしまうと、技術の進歩からどんどんおいていかれます。
それでは、Eclipseを使ってTDDによるプログラミング方法を説明していきます。Eclipseには、TDDに必要なお助け機能がたくさんついています。これらの機能を使うことで、開発スピードを格段にあげることができます。
はじめに、前回のテストコードを示します。
public class CompositeTest { |
<<プログラムリスト>>
Eclipse上でJavaのプロジェクトを作成して、テストコードをJUnit Test Caseにしました。JUnit4からテストメソッドには、@Testをつけます。ここではまだJUnitのフレームワークをimportしていないので、@Testがエラーになっています。Eclipseではエラーになっている行の先頭に×マークが付きます。
<<画面ショット1>>
エラーを修正するためには、Eclipseのお助け機能を使います。×マークをクリックして、お助けのアドバイスを見ます。そこで、一番上のimport文の挿入を選択すると、import文がソースコードに入りました。
<<画面ショット2>>
<<画面ショット3>>
さらに、もう1つのエラーを直します。ターゲットにしているCompanyクラスとPartyクラスが作成されていないので、×マークをクリックして、PartクラスとCompanyクラスを作ります。
<<画面ショット4>>
クラスは作りましたが、コンストラクターを定義していないので、エラーが残っています。×マークをクリックして、Companyクラスに、コンストラクターを自動生成します。
<<画面ショット5>>
<<画面ショット5.5>>
public class Company extends Party { |
<<プログラムリスト>>
コンストラクターのエラーはなくなりました。
<<画面ショット6>>
JUnitのアサート文、すなわち、テストの内容を示す比較文のエラーを修正します。このアサート文は、CompanyオブジェクトcmpからgetName()メソッドによって、コンストラクターでセットされた会社名を取ってきて、"A trading"と比較しています。
<<画面ショット7>>
Eclipseのお助け機能でgetName()メソッドを生成します。ただし、String型にしておきます。
public class Party { |
<<プログラムリスト>>
CompiteTestのテストクラスに戻ります。まだエラーがあるので、×マークをクリックして、org.junit.Assert.*をimportします。
<<画面ショット8>>
ようやくエラーがなくなりました。今はひとつひとつゆっくり見ていったので時間がかかりましたが、実際にはクリックを繰り返すだけなので、瞬時にしてエラーがなくなります。
<<画面ショット9>>
これで、Companyクラスの大枠ができました。しかし、まだテストを実行していません。このように、TDDでは、設計作業と称して画面の前で悩むよりも、クリックしてどんどん作っていった方が勝ちです。
従来のプログラミングは、動くかどうかわからないコードをたくさん書いていって、最後にプログラムを動かし、エラーを直していく作業です。TDDはこの方法と違い、少しずつ動くコードに内容を足していきます。
TDDを実際に見てきましたが、皆さんは、従来のデバッグの嵐となる方法とTDD、どちらが精神的にいいと思いますか?
今回は、Eclipse環境でのTDDを説明しました。次回は、実際にテストコードを動かしてみて、処理ロジックを追加していきます。