Gitでソースコード管理

hello プロジェクトを右クリックして[チーム]-[プロジェクトの共用]を選択する。

リポジトリー・タイプは「Git」を選択して「次へ」をクリック。

Gitリポジトリーの構成で、リポジトリーの「作成」をクリックして、個人ドライブの適当なフォルダを指定して「完了」をクリック。

こちらのメニューから「フィルター」を選択する。

フィルターのダイアログで「.*リソース」のチェックを外して「OK」をクリック。

.settings などを右クリックして[チーム]-[無視]を選択すると、.gitignore ファイルが作られる。

.gitignore を開いて、以下の内容を記述する。

/.settings/
*.class
*.jar
*.war
*.ear

# Eclipse
.project
.classpath
.settings

helloプロジェクトを右クリックして[チーム]-[コミット] を選択すると、Gitステージングが表示される。
.gitignore と HelloWorld.java をステージされた変更に移動する。
コミットメッセージに「最初のコミット」などのメッセージを記入して「コミット」をクリックする。

FizzBuzzでテスト駆動開発(TDD)の練習をしてみる

hello パッケージを右クリックして新規クラスで FizzBuzz を作成する。

FizzBuzz.java

package hello;

public class FizzBuzz {
	public String say(int i) {
		return "1";
	}
}

プロジェクトを右クリックして[チーム]-[コミット] を選択する。
FizzBuzz.javaをステージされた変更に移動してコミットメッセージを入力して[コミット]をクリック。

FizzBuzz.javaを右クリックし、[新規]-[その他]を選択。
JUnitテスト・ケースを選択。

FizBuzzTest.java

package hello;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class FizzBuzzTest {

	@Test
	void testSay() {
		FizzBuzz fb = new FizzBuzz();
		String s = fb.say(1);
		assertEquals("1", s);
	}

}

FizzBuzzTestに2を追加する。

package hello;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class FizzBuzzTest {

	@Test
	void testSay() {
		FizzBuzz fb = new FizzBuzz();
		String s = fb.say(1);
		assertEquals("1", s);
		s = fb.say(2);
		assertEquals("2", s);
	}

}

テストの再実行を行うとエラーになるので、FizzBuzzクラスを修正する。

package hello;

public class FizzBuzz {
	public String say(int i) {
		return String.valueOf(i);
	}
}

テストの再実行を行うと、テストがグリーンになった!
Gitにコミットする。

さらにテストを追加する。
3回目はFizzと返してほしいので、テストを分けてみる。

package hello;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class FizzBuzzTest {

	@Test
	void testSay() {
		FizzBuzz fb = new FizzBuzz();
		String s = fb.say(1);
		assertEquals("1", s);
		s = fb.say(2);
		assertEquals("2", s);
	}

	@Test
	void test3の場合はFizzを返す() {
		FizzBuzz fb = new FizzBuzz();
		String s = fb.say(3);
		assertEquals("Fizz", s);
	}
}

FizzBuzz.java を修正する。

package hello;

public class FizzBuzz {
	public String say(int i) {
		if (i == 3) return "Fizz";
		return String.valueOf(i);
	}
}

テストの再実行を行ったらグリーンになったので、コミットする。

4の場合と5の場合のテストを追加する。

	@Test
	void test4の場合は4を返す() {
		FizzBuzz fb = new FizzBuzz();
		String s = fb.say(4);
		assertEquals("4", s);
	}

	@Test
	void test5の場合はBuzzを返す() {
		FizzBuzz fb = new FizzBuzz();
		String s = fb.say(5);
		assertEquals("Buzz", s);
	}

5の場合がエラーになるのでFizzBuzzを修正する。

package hello;

public class FizzBuzz {
	public String say(int i) {
		if (i == 3) return "Fizz";
		if (i == 5) return "Buzz";
		return String.valueOf(i);
	}
}

テストの再実行を行ったらグリーンになったので、コミットする。

6の場合のテストを追加する。

	@Test
	void test6の場合はFizzを返す() {
		FizzBuzz fb = new FizzBuzz();
		String s = fb.say(6);
		assertEquals("Fizz", s);
	}

6の場合のテストがエラーになるのでFizzBuzzを修正する。

package hello;

public class FizzBuzz {
	public String say(int i) {
		if (i % 3 == 0) return "Fizz";
		if (i == 5) return "Buzz";
		return String.valueOf(i);
	}
}

9と10の場合のテストを追加する。

	@Test
	void test9と10のテスト() {
		FizzBuzz fb = new FizzBuzz();
		String s = fb.say(9);
		assertEquals("Fizz", s);
		s = fb.say(10);
		assertEquals("Buzz", s);
	}

10の場合にエラーになるのでFizzBuzzを修正する。

package hello;

public class FizzBuzz {
	public String say(int i) {
		if (i % 3 == 0) return "Fizz";
		if (i % 5 == 0) return "Buzz";
		return String.valueOf(i);
	}
}

11~14は従来のパターンで対応できているので、15の場合のテストを追加する。

	@Test
	void test15の場合はFizzBuzzを返す() {
		FizzBuzz fb = new FizzBuzz();
		String s = fb.say(15);
		assertEquals("FizzBuzz", s);
	}

FizzBuzzを修正する。

package hello;

public class FizzBuzz {
	public String say(int i) {
		if (i % 15 == 0) return "FizzBuzz";
		if (i % 3 == 0) return "Fizz";
		if (i % 5 == 0) return "Buzz";
		return String.valueOf(i);
	}
}

テストにパスしたのでコミットする。

ここまでで、FizzBuzzのTDDの練習は終わり。