EclipseでMavenによるプロジェクト作成からJUnitテストまでをやってみる

## はじめに
EclipseでMavenによるプロジェクト作成からJUnitテストまでをやってみようと思います。
また、Gitによる管理をするためにリモートリポジトリ管理としてBitbucket、GUIによるGit操作のためにSourcetreeを用います。

Eclipse公式: https://www.eclipse.org/
Maven公式: https://maven.apache.org/
JUnit公式: https://junit.org/junit4/
Bitbucket公式: https://bitbucket.org/
Sourcetree公式: https://ja.atlassian.com/software/sourcetree/

## 使うやつ
- Eclipse
- Bitbucket
- Sourcetree
- Maven
- JUnit

## リポジトリ作成
- Bitbucketでmaven_sampleというプロジェクトを作成する

## Eclipseでプロジェクト作成
- 新規 → その他 → Maven → Mavenプロジェクト
- カタログ
    - アーティファクトIDが`archetype-quickstart`のものを選択(おそらくデフォルトでOK)
- グループID
    - パッケージ名になる部分です
    - `com.example`と入力
- アーティファクトID
    - プロジェクト名になる部分です
    - `maven_sample`と入力

## 正常プロジェクト作成の確認
- src/main/java以下のApp.javaを実行
    - HelloWorldが表示される
- maven_sampleプロジェクトを選択してJUnitテスト実行
    - グリーンコードが表示される
    - (src/test/java以下のApp.javaの実行でも可)

## pom.xmlの編集
- 初期状態ではJUnitのバージョンが3系であるので、4系に修正

```pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>maven_sample</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>maven_sample</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.version>4.12</junit.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
```
- propertiesにjunit.versionを追加
- dependencyのjunitのversionを修正

## サンプルコードの実装
- Calculator.javaの作成
    - addメソッドで足し算をする

```Calculator.java
package com.example;

public class Calculator {

	public static int add (int a, int b) {
		return a + b;
	}

}
```
- CalculatorTest.javaの作成
    - testAddメソッドで1+2が3になることをテストする

```CalculatorTest.java
package com.example;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import org.junit.Test;

public class CalculatorTest extends Calculator {

	@Test
	public void testAdd() {
		int actual = Calculator.add(1, 2);
		assertThat(actual, is(3));
	}

}
```

- テストの作成
    - テストを作成したいクラスで`ctrl + 9`によりテストを作成できる
    - 新規作成からその他→java/junitテストケースを選択
- 参考: http://carey.link/java/junit/junit-use

## プロジェクトをbitbucketに上げる
- ローカルリポジトリ作成
    - Sourcetreeから新規 → 既存のローカルリポジトリを追加
    - 作成したローカルリポジトリをダブルクリック
- .gitignoreの作成
    - 設定 → 高度な設定 → リポジトリ限定無視リストを編集
    - 参照: https://qiita.com/tora470/items/d61c3fcb261e48edc996

```.gitignore
# Java
*.class
*.jar
*.war
*.ear

# Eclipse
.project
.classpath
.settings

# Idea
.idea
*.iml
*.iws
*.ipr

# OS
Thumbs.db
.DS_Store

# Gradle
.gradle
!gradle-wrapper.jar

# Maven
target
```
- リモートリポジトリとローカルリポジトリの紐づけ
    - リポジトリ → リモート → 追加
    - URL/パスにリモートリポジトリのアドレスを入力
        - bitbucketの`Let's put some bits in your bucket`をコピー
        - `git clone`を削除すること
    - README.mdの作成
    - ステージング
    - コミット
        - 最初は`first commit`, `Initial commit`をコミットメッセージにすることが多い
    - プッシュ
        - masterを選択
    - BitbucketでリモートリポジトリにREADME.mdがあることを確認する
- 作成したコードをpushする
    - `.gitignore`
    - `pom.xml`
    - `*.java`
        - 作成したサンプルコード、テストコード等

## おわりに
EclipseでMavenによるプロジェクト作成からJUnitテストまでをやってみました。
参考になれば幸いです。
次はDbUnitをやってみようと思います。
→ [DbUnitをやってみる](https://qiita.com/hirotatsuuu/items/7413ac25d0244a89a792)