Spring Bootを使ってWebアプリを作成する

新規プロジェクトを作成する。

プロジェクトの種類は、Springスターター・プロジェクト
名前: example
グループ: jp.kpc
成果物: example
パッケージ: jp.kpc

[ウィンドウ]-[パースペクティブ]-[パースペクティブを開く]-[その他] で開いたダイアログから「JavaEE」を選択する。

pom.xml を開いて8行目の 2.2.10.RELEASE を 2.2.1.RELEASE に変更して保存する。

配布フォルダの システム開発実習/.m2 にある repository フォルダをコピーして、
Cドライブの「ユーザー」の下にある自分のフォルダ内にある .m2 の repository に上書きする。

その後、Eclipse で example プロジェクトを右クリックして「リフレッシュ」を選択する。

さらに、Eclipse で example プロジェクトを右クリックして[Maven]-[プロジェクトの更新]を選択する。

「マーカー」タブを見ると、Maven構成問題として「不明」というエラーが出ているが、右クリックして「削除」しておく。

プロジェクトを右クリックし[実行]-[SpringBootアプリケーション」を選択する。

「コンソール」タブの一番下に「Started ExampleApplication in x.xxx seconds (JVM running for ..」のメッセージが出ていれば、Webアプリケーションの起動に成功している。

Webアプリケーションが動作している状態で http://localhost:8080/ にアクセスすれば「Whitelabel Error Page」と表示される。

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の練習は終わり。

Hello World

開発環境は Eclipse を使用する。

Eclipseは、プロジェクトという単位でプログラムを管理する。

新規Javaプロジェクトを作成する。
名前: hello

新規Javaクラスを作成する。
名前: HelloWorld

package hello;

public class HelloWorld {

	public static void main(String[] args) {
		System.out.println("Hello World!");
	}

}