

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 「 サンプルを使用したテストレポート AWS CLI」
<a name="sample-test-report-cli"></a>

buildspec ファイルで指定したテストは、ビルド中に実行されます。このサンプルでは、 AWS CLI を使用して CodeBuild のビルドにテストを組み込む方法を示します。JUnit を使用して単体テストを作成または、別のツールを使用して構成テストを作成することもできます。その後、テスト結果を評価して、問題を修正したり、アプリケーションを最適化したりできます。

CodeBuild API または AWS CodeBuild コンソールを使用して、テスト結果にアクセスできます。このサンプルでは、テスト結果が S3 バケットにエクスポートされるようにレポートを設定する方法を示します。

**Topics**
+ [テストレポートサンプルを実行](#sample-test-report-cli-run)

## テストレポートサンプルを実行
<a name="sample-test-report-cli-run"></a>

次の手順を使用して、テストレポートサンプルを実行します。

**Topics**
+ [前提条件](#sample-test-report-cli-prerequisites)
+ [ステップ 1: レポートグループを作成](#sample-test-report-cli-create-report)
+ [ステップ 2: レポートグループによるプロジェクトの設定](#sample-test-report-cli-create-project-with-report)
+ [ステップ 3: レポートの実行と結果の表示](#sample-test-report-cli-run-and-view-report-results)

### 前提条件
<a name="sample-test-report-cli-prerequisites"></a>
+ テストケースの作成 このサンプルは、サンプルテストレポートに含めるテストケースがあるという前提で書かれています。buildspec ファイルでテストファイルの場所を指定します。

  以下のテストレポートファイル形式がサポートされています。
  + Cucumber JSON (.json)
  + JUnit XML (.xml)
  + NUnit XML (.xml)
  + NUnit3 XML (.xml)
  + TestNG XML (.xml)
  + Visual Studio TRX (.trx)
  + Visual Studio TRX XML (.xml)

  Surefire JUnit plugin、TestNG、Cucumber などのいずれかの形式でレポートファイルを作成できる任意のテストフレームワークを使用して、テストケースを作成します。
+ S3 バケットを作成し、その名前を書き留めます。詳細については、*Amazon S3 ユーザーガイド*の「[S3 バケットを作成する方法](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)」を参照してください。
+ IAM ロールを作成し、その ARN を書き留めます。ビルドプロジェクトを作成する際は、ARN が必要です。
+ ロールに次の権限がない場合は、追加します。

  ```
  {
      "Effect": "Allow",
      "Resource": [
          "*"
      ],
      "Action": [
          "codebuild:CreateReportGroup",
          "codebuild:CreateReport",
          "codebuild:UpdateReport",
          "codebuild:BatchPutTestCases"
      ]
  }
  ```

   詳細については、「[テストレポートオペレーションのアクセス許可](test-permissions.md#test-permissions-related-to-reporting)」を参照してください。

### ステップ 1: レポートグループを作成
<a name="sample-test-report-cli-create-report"></a>

1. `CreateReportGroupInput.json` という名前のファイルを作成します。

1. S3 バケットに、テスト結果をエクスポートするフォルダを作成します。

1. 以下を `CreateReportGroupInput.json` にコピーします。`<bucket-name>` で、S3 バケットの名前を使用します。`<path-to-folder>` で、S3 バケット内のフォルダへのパスを入力します。

   ```
   {
     "name": "<report-name>",
     "type": "TEST",
     "exportConfig": {
       "exportConfigType": "S3",
       "s3Destination": {
         "bucket": "<bucket-name>",
         "path": "<path-to-folder>",
         "packaging": "NONE"
       }
     }
   }
   ```

1. `CreateReportGroupInput.json` が含まれているディレクトリで次のコマンドを実行します。

   ```
   aws codebuild create-report-group --cli-input-json file://CreateReportGroupInput.json
   ```

   出力は次のようになります。`reportGroup` の ARN を書き留めます。これは、このレポートグループを使用するプロジェクトを作成するときに使用します。

   ```
   {
     "reportGroup": {
       "arn": "arn:aws:codebuild:us-west-2:123456789012:report-group/<report-name>",
       "name": "<report-name>",
       "type": "TEST",
       "exportConfig": {
         "exportConfigType": "S3",
         "s3Destination": {
           "bucket": "<s3-bucket-name>",
           "path": "<folder-path>",
           "packaging": "NONE",
           "encryptionKey": "arn:aws:kms:us-west-2:123456789012:alias/aws/s3"
         }
       },
       "created": 1570837165.885,
       "lastModified": 1570837165.885
     }
   }
   ```

### ステップ 2: レポートグループによるプロジェクトの設定
<a name="sample-test-report-cli-create-project-with-report"></a>

レポートを実行するには、まずレポートグループで構成された CodeBuild ビルドプロジェクトを作成します。レポートグループに指定されたテストケースは、ビルドの実行時に実行されます。

1. `buildspec.yml` という名前の buildspec ファイルを作成します。

1. 次のYAMLを `buildspec.yml` ファイルのテンプレートとして使用します。テストを実行するコマンドを必ず含めてください。`reports` セクションで、テストケースの結果を含むファイルを指定します。これらのファイルは、CodeBuild でアクセスできるテスト結果を保存します。作成から 30 日後に有効期限が切れます。これらのファイルは、S3 バケットにエクスポートする生のテストケース結果ファイルとは異なります。

   ```
   version: 0.2
       phases:
       install:
           runtime-versions:
               java: openjdk8
       build:
         commands:
           - echo Running tests 
           - <enter commands to run your tests>
           
       reports:
         <report-name-or-arn>: #test file information
         files:
           - '<test-result-files>'
         base-directory: '<optional-base-directory>'
         discard-paths: false #do not remove file paths from test result files
   ```
**注記**  
既存のレポートグループの ARN の代わりに、作成されていないレポートグループの名前を指定することもできます。ARN の代わりに名前を指定すると、CodeBuild はビルドの実行時にレポートグループを作成します。この名前には、プロジェクト名と buildspec ファイルで指定した名前が `project-name-report-group-name` の形式で含まれます。詳細については、「[テストレポートの作成](report-create.md)」および「[Report group naming](test-report-group-naming.md)」を参照してください。

1. `project.json` という名前のファイルを作成します。このファイルには、**create-project** コマンドの入力が含まれます。

1. 次の JSON を `project.json` にコピーします。`source` で、ソースファイルを含むリポジトリのタイプと場所を入力します。`serviceRole` で、使用しているロールの ARN を指定します。

   ```
   {
     "name": "test-report-project",
     "description": "sample-test-report-project",
     "source": {
       "type": "CODECOMMIT|CODEPIPELINE|GITHUB|S3|BITBUCKET|GITHUB_ENTERPRISE|NO_SOURCE",
       "location": "<your-source-url>"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "cache": {
       "type": "NO_CACHE"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "small"
     },
     "serviceRole": "arn:aws:iam::<your-aws-account-id>:role/service-role/<your-role-name>"
   }
   ```

1. `project.json` が含まれているディレクトリで次のコマンドを実行します。これにより、`test-project` という名前のプロジェクトが作成されます。

   ```
   aws codebuild create-project --cli-input-json file://project.json
   ```

### ステップ 3: レポートの実行と結果の表示
<a name="sample-test-report-cli-run-and-view-report-results"></a>

このセクションでは、前に作成したプロジェクトのビルドを実行します。ビルドプロセス中に、CodeBuild は、テストケースの結果を含むレポートを作成します。レポートは、指定したレポートグループに含まれます。

1. ビルドを開始するには、次のコマンドを実行します。「`test-report-project`」は、上記で作成されたビルドプロジェクトの名前です。出力に表示されるビルド ID を書き留めます。

   ```
   aws codebuild start-build --project-name test-report-project
   ```

1. 次のコマンドを実行して、レポートの ARN を含むビルドに関する情報を取得します。`<build-id>` で、ビルド ID を指定します。出力の「`reportArns`」プロパティのレポート ARN を書き留めます。

   ```
   aws codebuild batch-get-builds --ids <build-id>
   ```

1. 次のコマンドを実行して、レポートの詳細を取得します。`<report-arn>` で、レポート ARN を指定します。

   ```
   aws codebuild batch-get-reports --report-arns <report-arn>
   ```

   出力は次のようになります。このサンプル出力は、成功、失敗、スキップされたテスト、エラーの結果、または不明なステータスを返したテストの数を示しています。

   ```
   {
     "reports": [
       {
         "status": "FAILED",
         "reportGroupArn": "<report-group-arn>",
         "name": "<report-group-name>",
         "created": 1573324770.154,
         "exportConfig": {
           "exportConfigType": "S3",
           "s3Destination": {
             "bucket": "<amzn-s3-demo-bucket>",
             "path": "<path-to-your-report-results>",
             "packaging": "NONE",
             "encryptionKey": "<encryption-key>"
           }
         },
         "expired": 1575916770.0,
         "truncated": false,
         "executionId": "arn:aws:codebuild:us-west-2:123456789012:build/<name-of-build-project>:2c254862-ddf6-4831-a53f-6839a73829c1",
         "type": "TEST",
         "arn": "<report-arn>",
         "testSummary": {
           "durationInNanoSeconds": 6657770,
           "total": 11,
           "statusCounts": {
             "FAILED": 3,
             "SKIPPED": 7,
             "ERROR": 0,
             "SUCCEEDED": 1,
             "UNKNOWN": 0
           }
         }
       }
     ],
     "reportsNotFound": []
   }
   ```

1. レポートのテストケースに関する情報を一覧表示するには、次のコマンドを実行します。`<report-arn>` で、レポートの ARN を指定します。オプションの `--filter` パラメータでは、(`SUCCEEDED`、`FAILED`、`SKIPPED`、 `ERROR`、または `UNKNOWN`) の 1 つのステータス結果指定できます。

   ```
   aws codebuild describe-test-cases \
       --report-arn <report-arn> \
       --filter status=SUCCEEDED|FAILED|SKIPPED|ERROR|UNKNOWN
   ```

    出力は次のようになります。

   ```
   {
     "testCases": [
       {
         "status": "FAILED",
         "name": "Test case 1",
         "expired": 1575916770.0,
         "reportArn": "<report-arn>",
         "prefix": "Cucumber tests for agent",
         "message": "A test message",
         "durationInNanoSeconds": 1540540,
         "testRawDataPath": "<path-to-output-report-files>"
       },
       {
         "status": "SUCCEEDED",
         "name": "Test case 2",
         "expired": 1575916770.0,
         "reportArn": "<report-arn>",
         "prefix": "Cucumber tests for agent",
         "message": "A test message",
         "durationInNanoSeconds": 1540540,
         "testRawDataPath": "<path-to-output-report-files>"
       }
     ]
   }
   ```