Learn to Live and Live to Learn

IT(たまにビジネス)に関する記事を読んで、考えて、使ってみたことをまとめる場。

TDDに挑戦【Java】

TDDとはTest Driven Development(テスト駆動開発)の略です。
テストコードを書いてから実装しましょう、という開発手法です。
今回は実際にどうやるのか

バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)

バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)

を読みながらJavaを使用してやってみました。

TDDの流れ

(1) テストコードを書く

assertEquals(期待値, 実行するもの);

(2) 仮実装
とりあえずコンパイルが通るものを作成。
(3) テスト
テストするファイルを右クリック→実行→JUnitテスト
(4) 失敗(JUnitモジュールが赤色に)※1
(5) テストを成功させるための最小限の実装
(6) テスト
(7) 成功(緑色)
(8) Triangulation(三角測量)=テストケースの追加
(9) 失敗(赤色)
(10) すべてのテストを通過できるようリファクタリング※2
(11) テスト成功!!

※1 失敗の理由はJUnitのモジュールにある
▷Goods.java
 ▷TestGetTaxIncludedPrice.java←該当ソースコードをクリック
すると、下にある障害トレースという項目に表示されます。

※2 リファクタリングとは
・コードの重複排除
・汎用化

試した環境とソースコード

環境

Eclipse Indigo
JUnit version3.8.2
JDK

ソースコード

GoodsTest.java

import junit.framework.TestCase;

public class GoodsTest extends TestCase {

	public GoodsTest(String name) {
		super(name);
	}
	
	public void testGetGoodsPrice() {
		Goods ice = new Goods(100);
		assertEquals(100, ice.getPrice());
	}
	
	public void testGetTaxIncludedPrice() {
		Goods ice = new Goods(100);
		assertEquals(105, ice.getTaxIncludedPrice());
		Goods handkerchief = new Goods(500);
		assertEquals(525, handkerchief.getTaxIncludedPrice());
	}

}

Goods.java

public class Goods {

	private int unitPrice = 0;
	
	public Goods(int unitPrice) {
		this.unitPrice = unitPrice;
	}

	public Object getPrice() {
		return this.unitPrice;
	}

	public Object getTaxIncludedPrice() {
		return (int) (this.unitPrice * 1.05);
	}

}