読者です 読者をやめる 読者になる 読者になる

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);
	}

}