初心者向けCI/CD実践 - Part4 - CI/CDツールとその他ツールの併用例（テストツール）編

# CI/CD環境を構築
本連載は、「CI/CDを実践してみたい」という超初心者向けの内容となっています
enterpriseレベルやproductionレベルの導入に際して、「CI/CDとは？」という感覚をつかむものとなれば幸いです。
利用するツール等はこちらで選定していますので、別のツールを利用する場合は、適宜お調べください。
大まかな内容としては、以下のようなフローとなります

>1. 環境構築
2. CI/CDツールの構築
3. 開発プロジェクトの準備<-今回はここを説明**
    - GitHubにプロジェクトデータを登録
    - Jenkins Pluginのインストール
    - 手動ビルド
4. **CI/CDツールとその他ツールの併用例**
    1. **テストツールとの協調<-今回はここを説明**
    2. インスペクションツールとの協調
5. pipelineの実現

## <font color="Red">概要</font>
>- ```JUnit```によるテスト実行をジョブに組み込む
- テスト結果の確認方法
- 失敗したテスト結果をもとに修正


### ジョブの編集（テストの自動化）
[前回](https://qiita.com/tem-individual/items/76cc0a94cbb15d88e65d)作成した```JenkinsJOB```のジョブを以下の手順で編集する
1. dashboardから中央ペインの```JenkinsJOB```を選択
2. 左ペインの```設定```
3. 設定画面下部の```ビルド後の処理```にて```JUnitテスト結果の集計```を選択
4. 以下の通り、入力し設定を保存

![図22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/8a5c339f-eba2-8883-171a-6507100f17c7.png)

### <font color="red">注意　</font>テストコードの修正
今回のデモプロジェクトでは、[［改訂第3版］Jenkins実践入門](https://gihyo.jp/book/2017/978-4-7741-8928-4)のデモプロジェクトを利用している
デモプロジェクトのソースコードはこちらの[Git](https://github.com/wdpressplus/Jenkins_Practical_Guide_3rd_Edition)をForkして各自のレポジトリに複製しているが、本書の内容と一部異なる部分がある
そのため、このステップを飛ばすと**失敗するはずのテスト結果が成功してしまう**

以下に本来の失敗するテストに編集する方法を記載する（後程また成功する方法に戻すのだが、、、、、）

**修正前**

```java:sampleproject/src/main/java/jp/gihyo/jenkinsbook/action/SampleAction.java
        lastName = request.getParameter("LastName");
        if ((lastName == null) || ("".equals(lastName))) {
            return true; 
        }
```
**修正後**

```java:sampleproject/src/main/java/jp/gihyo/jenkinsbook/action/SampleAction.java
        lastName = request.getParameter("LastName");
        if ((lastName == null) || ("".equals(lastName))) {
            return false; 
        }
```

修正手順
1. ローカルレジストリ上で```sampleproject/src/main/java/jp/gihyo/jenkinsbook/action/SampleAction.java```を編集```true```->```false```（編集はmaster branch上で行う）
2. ```git add SampleAction.java```で変更ファイルをステージング化
3. ```git commit -m "Fix right code to wrong"```で変更をコミット
4. ```git push origin master```でリモートレジストリにも変更を反映

>**```git commit```に失敗した場合**
上記の手順3で以下のような出力が表れた場合、コミットに失敗している

>```
*** Please tell me who you are.
Run
  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address
```

>gitの初期設定としてユーザ情報が不足しているので、コミットに失敗

>```
$ git config --global user.email "<hoge>@<fuga>"
$ git config --global user.name "<git account>"
```
その後再度コミットすると成功するはず
詳しい理解は[こちら](https://qiita.com/shionit/items/fb4a1a30538f8d335b35)

### テスト結果の確認
以前と同様の方法で```ビルドの実行```を行うと下記のようにビルドは成功するが、テストに失敗する

![図23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/19fd32d6-f89b-bc87-fd5d-fb0d21530c74.png)

### 失敗したテストの詳細を確認
失敗したテストの詳細を確認するためには、```テスト結果```を選択

![図24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/bd010c16-4410-e81c-e4c3-01b42d851a67.png)

テスト名をクリック

![図25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/c2fb1661-28ef-35ab-b338-09b9c968d353.png)

```Error Message```のところに「<font color="red">注意　</font>テストコードの修正」で変更する前の結果が期待されている

### テスト結果をもとにコードの修正
手順的には、「<font color="red">注意　</font>テストコードの修正」とほぼ同じなので詳しく説明しないが、以下の手順で修正をリモート/ローカルレジストリに反映させる

```
$ cd cicd-workspace/sampleproject/src/main/java/jp/gihyo/jenkinsbook/action
$ ls -a
.  ..  SampleAction.java  package-info.java
$ vi SampleAction.java   //"true"->"false"に変更
$ git status
ブランチ master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   SampleAction.java

no changes added to commit (use "git add" and/or "git commit -a")
$ git add SampleAction.java
$ git commit -m "Fix to wrong code to right"
[master 3ed7ccb] Fix to wrong code to right
 1 file changed, 1 insertion(+), 1 deletion(-)
$ git push origin master
Username for 'https://github.com': <account name>
Password for 'https://<account name>@github.com':
Enumerating objects: 19, done.
Counting objects: 100% (19/19), done.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (10/10), 730 bytes | 121.00 KiB/s, done.
Total 10 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To https://github.com/<account name>/Jenkins_Practical_Guide_3rd_Edition.git
   c847e7e..3ed7ccb  master -> master
```

再度ビルドを実行すると、結果は<font color="blue">●</font>となりビルド及びテストが成功している