株式会社テクノロジックアート代表取締役。ITとりわけシステム開発の領域では、最新の技術が次々と出て来ます。多くの最新技術の中で、本質的なものはどれで、その本質的な技術をどのように身につけていくかを書いていきます。

開発スピード3倍のプログラミングテクを習得せよ

»

 前回はTDD(テスト駆動開発)の簡単な説明をしました。TDDでプログラムを作るのは、欧米では当たり前です。それは、EclipseにTDDのツールであるJUnit、Visual StudioにもUnit機能が組み込まれていることからも明白です。JUnitなんて名前しか知らないという人は、使い方を覚えればいいだけです。知らないから使えないと言ってしまうと、技術の進歩からどんどんおいていかれます。

 それでは、Eclipseを使ってTDDによるプログラミング方法を説明していきます。Eclipseには、TDDに必要なお助け機能がたくさんついています。これらの機能を使うことで、開発スピードを格段にあげることができます。

 はじめに、前回のテストコードを示します。

public class CompositeTest {

@Test public void CmpName()
{
Party cmp = new Company("A trading");
assertEquals("A trading",cmp.getName());
}

}

<<プログラムリスト>>

 Eclipse上でJavaのプロジェクトを作成して、テストコードをJUnit Test Caseにしました。JUnit4からテストメソッドには、@Testをつけます。ここではまだJUnitのフレームワークをimportしていないので、@Testがエラーになっています。Eclipseではエラーになっている行の先頭に×マークが付きます。

Fig2_1_2

<<画面ショット1>>

 エラーを修正するためには、Eclipseのお助け機能を使います。×マークをクリックして、お助けのアドバイスを見ます。そこで、一番上のimport文の挿入を選択すると、import文がソースコードに入りました。

Fig2_2_2

<<画面ショット2>>

Fig2_3_2

<<画面ショット3>>

 さらに、もう1つのエラーを直します。ターゲットにしているCompanyクラスとPartyクラスが作成されていないので、×マークをクリックして、PartクラスとCompanyクラスを作ります。

Fig2_4_2

<<画面ショット4>>

 クラスは作りましたが、コンストラクターを定義していないので、エラーが残っています。×マークをクリックして、Companyクラスに、コンストラクターを自動生成します。

Fig2_5_2

<<画面ショット5>>

Fig2_10_2

<<画面ショット5.5>>

public class Company extends Party {

public Company(String string) {
// TODO Auto-generated constructor stub
}

}

<<プログラムリスト>>

 コンストラクターのエラーはなくなりました。

Fig2_6_2

<<画面ショット6>>

 JUnitのアサート文、すなわち、テストの内容を示す比較文のエラーを修正します。このアサート文は、CompanyオブジェクトcmpからgetName()メソッドによって、コンストラクターでセットされた会社名を取ってきて、"A trading"と比較しています。

Fig2_7_2

<<画面ショット7>>

 Eclipseのお助け機能でgetName()メソッドを生成します。ただし、String型にしておきます。

public class Party {

public String getName() {
// TODO Auto-generated method stub
return "";
}

}

<<プログラムリスト>>

 CompiteTestのテストクラスに戻ります。まだエラーがあるので、×マークをクリックして、org.junit.Assert.*をimportします。

Fig2_8_2

<<画面ショット8>>

 ようやくエラーがなくなりました。今はひとつひとつゆっくり見ていったので時間がかかりましたが、実際にはクリックを繰り返すだけなので、瞬時にしてエラーがなくなります。

Fig2_91

<<画面ショット9>>

 これで、Companyクラスの大枠ができました。しかし、まだテストを実行していません。このように、TDDでは、設計作業と称して画面の前で悩むよりも、クリックしてどんどん作っていった方が勝ちです。

 従来のプログラミングは、動くかどうかわからないコードをたくさん書いていって、最後にプログラムを動かし、エラーを直していく作業です。TDDはこの方法と違い、少しずつ動くコードに内容を足していきます。

 TDDを実際に見てきましたが、皆さんは、従来のデバッグの嵐となる方法とTDD、どちらが精神的にいいと思いますか?

 今回は、Eclipse環境でのTDDを説明しました。次回は、実際にテストコードを動かしてみて、処理ロジックを追加していきます。

Comment(0)

コメント

コメントを投稿する