

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

# さまざまなテストフレームワークサンプルの並列テスト実行
<a name="sample-parallel-test"></a>

`codebuild-tests-run` CLI コマンドを使用すると、並列実行環境間にテストを分割して実行できます。次のセクションでは、`codebuild-tests-run` コマンドの使用方法を示す、さまざまなフレームワークの `buildspec.yml` サンプルを示します。
+ 以下の各例には 5 つの `parallelism` レベルが含まれています。つまり、テストを分割する 5 つの同一の実行環境が作成されます。`build-fanout` セクション `parallelism` 値を変更することで、プロジェクトに適した `parallelism` レベルを選択できます。
+ 以下の各例は、デフォルトでテストファイル名で分割されるようテストを設定する方法を示しています。これにより、テストが並列実行環境間に均等に分散されます。

始める前に、「[バッチビルドで並列テストを実行する](parallel-test.md)」で詳細を参照してください。

`codebuild-tests-run` CLI コマンドで使用するオプションの詳細なリストについては、「[CLI コマンド `codebuild-tests-run` を使用する](parallel-test-tests-run.md)」を参照してください。

**Topics**
+ [Django で並列テストを設定する](sample-parallel-test-django.md)
+ [Elixir で並列テストを設定する](sample-parallel-test-elixir.md)
+ [Go で並列テストを設定する](sample-parallel-test-go.md)
+ [Java (Maven) で並列テストを設定する](sample-parallel-test-java-maven.md)
+ [Javascript (Jest) で並列テストを設定する](sample-parallel-test-javascript.md)
+ [Kotlin で並列テストを設定する](sample-parallel-test-kotlin.md)
+ [PHPUnit で並列テストを設定する](sample-parallel-test-phpunit.md)
+ [Pytest で並列テストを設定する](sample-parallel-test-python.md)
+ [Ruby (Cucumber) で並列テストを設定する](sample-parallel-test-ruby-cucumber.md)
+ [Ruby (RSpec) で並列テストを設定する](sample-parallel-test-ruby.md)

# Django で並列テストを設定する
<a name="sample-parallel-test-django"></a>

以下は、Ubuntu プラットフォームでの Django による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5

phases:
  install:
    commands:
      - echo 'Installing Python dependencies'
      - sudo yum install -y python3 python3-pip 
      - python3 -m ensurepip --upgrade 
      - python3 -m pip install django
  pre_build:
    commands:
      - echo 'Prebuild'
  build:
    commands:
      - echo 'Running Django Tests'
      - |
        codebuild-tests-run \
         --test-command 'python3 manage.py test $(echo "$CODEBUILD_CURRENT_SHARD_FILES" | sed -E "s/\//__/g; s/\.py$//; s/__/./g")' \ 
         --files-search "codebuild-glob-search '**/tests/*test_*.py'" \
         --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo 'Test execution completed'
```

上記の例は、環境変数 `CODEBUILD_CURRENT_SHARD_FILES` の使用方法を示しています。ここで、`CODEBUILD_CURRENT_SHARD_FILES` は Django によりサポートされているドット表記ファイルパスを取得するために使用されます。上記のように、`CODEBUILD_CURRENT_SHARD_FILES` を二重引用符内で囲みます。

# Elixir で並列テストを設定する
<a name="sample-parallel-test-elixir"></a>

以下は、Ubuntu プラットフォームでの Elixir による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5

phases:
  install:
    commands:
      - echo 'Installing Elixir dependencies'
      - sudo apt update
      - sudo DEBIAN_FRONTEND=noninteractive apt install -y elixir
      - elixir --version
      - mix --version
  pre_build:
    commands:
      - echo 'Prebuild'
  build:
    commands:
      - echo 'Running Elixir Tests'
      - |
        codebuild-tests-run \
         --test-command 'mix test' \
         --files-search "codebuild-glob-search '**/test/**/*_test.exs'" \ 
         --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo "Test execution completed"
```

# Go で並列テストを設定する
<a name="sample-parallel-test-go"></a>

以下は、Linux プラットフォームでの Go による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Fetching Go version'
      - go version
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running go Tests'
      - go mod init calculator
      - cd calc
      - |
        codebuild-tests-run \
         --test-command "go test -v calculator.go" \
         --files-search "codebuild-glob-search '**/*test.go'"
  post_build:
    commands:
      - echo "Test execution completed"
```

上記の例では、`calculator.go` 関数にはテストする単純な数学関数が含まれており、すべてのテストファイルと `calculator.go` ファイルは `calc` フォルダ内にあります。

# Java (Maven) で並列テストを設定する
<a name="sample-parallel-test-java-maven"></a>

以下は、Linux プラットフォームでの Java による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false 
  build-fanout:
    parallelism: 5
    ignore-failure: false
    
phases:
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo "Running mvn test"
      - |
        codebuild-tests-run \
          --test-command 'mvn test -Dtest=$(echo "$CODEBUILD_CURRENT_SHARD_FILES" | sed "s|src/test/java/||g; s/\.java//g; s|/|.|g; s/ /,/g" | tr "\n" "," | sed "s/,$//")' \
          --files-search "codebuild-glob-search '**/test/**/*.java'"
         
  post_build:
    commands:
      - echo "Running post-build steps..."
      - echo "Test execution completed"
```

示されている例では、環境変数 `CODEBUILD_CURRENT_SHARD_FILES` には現在のシャード内のテストファイルが含まれており、それぞれ改行で区切られています。これらのファイルは、Maven の `-Dtest` パラメータで受け入れられる形式のクラス名のカンマ区切りリストに変換されます。

# Javascript (Jest) で並列テストを設定する
<a name="sample-parallel-test-javascript"></a>

以下は、Ubuntu プラットフォームでの Javascript による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: true
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Node.js dependencies'
      - apt-get update
      - apt-get install -y nodejs
      - npm install
      - npm install --save-dev jest-junit
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running JavaScript Tests'
      - |
         codebuild-tests-run \
          --test-command "npx jest" \
          --files-search "codebuild-glob-search '**/test/**/*.test.js'" \
          --sharding-strategy 'stability'
    post_build:
      commands:
        - echo 'Test execution completed'
```

# Kotlin で並列テストを設定する
<a name="sample-parallel-test-kotlin"></a>

以下は、Linux プラットフォームでの Kotlin による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 2
    ignore-failure: false

phases:
  install:
    runtime-versions:
      java: corretto11 
    commands:
      - echo 'Installing dependencies'
      - KOTLIN_VERSION="1.8.20" # Replace with your desired version
      - curl -o kotlin-compiler.zip -L "https://github.com/JetBrains/kotlin/releases/download/v${KOTLIN_VERSION}/kotlin-compiler-${KOTLIN_VERSION}.zip"
      - unzip kotlin-compiler.zip -d /usr/local
      - export PATH=$PATH:/usr/local/kotlinc/bin
      - kotlin -version
      - curl -O https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/1.8.2/junit-platform-console-standalone-1.8.2.jar
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running Kotlin Tests'
      - |
        codebuild-tests-run \
          --test-command 'kotlinc src/main/kotlin/*.kt $(echo "$CODEBUILD_CURRENT_SHARD_FILES" | tr "\n" " ") -d classes -cp junit-platform-console-standalone-1.8.2.jar' \
          --files-search "codebuild-glob-search 'src/test/kotlin/*.kt'"
      - |
        codebuild-tests-run \
          --test-command '
            java -jar junit-platform-console-standalone-1.8.2.jar --class-path classes \
              $(for file in $CODEBUILD_CURRENT_SHARD_FILES; do
                 class_name=$(basename "$file" .kt)
                 echo "--select-class $class_name"
               done)
          ' \
          --files-search "codebuild-glob-search 'src/test/kotlin/*.kt'"
  post_build:
    commands:
      - echo "Test execution completed"
```

上記の例では、`codebuild-tests-run` CLI が 2 回使用されています。最初の実行時、kotlinc はファイルをコンパイルします。`CODEBUILD_CURRENT_SHARD_FILES` 変数は、現在のシャードに割り当てられたテストファイルを取得し、その後スペース区切りリストに変換されます。2 回目の実行では、JUnit がテストを実行します。ここでも、`CODEBUILD_CURRENT_SHARD_FILES` は現在のシャードに割り当てられたテストファイルを取得しますが、今回はクラス名に変換されます。

# PHPUnit で並列テストを設定する
<a name="sample-parallel-test-phpunit"></a>

以下は、Linux プラットフォームでの PHPUnit による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2
 
batch:
   fast-fail: false
   build-fanout:
     parallelism: 5
     ignore-failure: false
 
phases:
   install:
     commands:
       - echo 'Install dependencies'
       - composer require --dev phpunit/phpunit
   pre_build:
     commands:
       - echo 'prebuild'
   build:
     commands:
       - echo 'Running phpunit Tests'
       - composer dump-autoload
       - | 
         codebuild-tests-run \
          --test-command "./vendor/bin/phpunit --debug" \ 
          --files-search "codebuild-glob-search '**/tests/*Test.php'"
   post_build:
       commands:
         - echo 'Test execution completed'
```

# Pytest で並列テストを設定する
<a name="sample-parallel-test-python"></a>

以下は、Ubuntu プラットフォームでの Pytest による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Python dependencies'
      - apt-get update
      - apt-get install -y python3 python3-pip
      - pip3 install --upgrade pip
      - pip3 install pytest
  build:
    commands:
      - echo 'Running Python Tests'
      - |
         codebuild-tests-run \
          --test-command 'python -m pytest' \
          --files-search "codebuild-glob-search 'tests/test_*.py'" \
          --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo "Test execution completed"
```

以下は、Windows プラットフォームでの Pytest による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Python dependencies'
      - pip install pytest
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running pytest'
      - |
        & codebuild-tests-run `
         --test-command 'pytest @("$env:CODEBUILD_CURRENT_SHARD_FILES" -split \"`r?`n\")'  `
         --files-search "codebuild-glob-search '**/test_*.py' '**/*_test.py'" `
         --sharding-strategy 'equal-distribution' 
  post_build:
    commands:
      - echo "Test execution completed"
```

上記の例では、現在のシャードに割り当てられており、pytest コマンドに配列として渡されるテストファイルを取得するために `CODEBUILD_CURRENT_SHARD_FILES` 環境変数が使用されています。

# Ruby (Cucumber) で並列テストを設定する
<a name="sample-parallel-test-ruby-cucumber"></a>

以下は、Linux プラットフォームでの Cucumber による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Ruby dependencies'
      - gem install bundler
      - bundle install
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running Cucumber Tests'
      - cucumber --init
      - |
        codebuild-tests-run \
         --test-command "cucumber" \
         --files-search "codebuild-glob-search '**/*.feature'"
  post_build:
    commands:
      - echo "Test execution completed"
```

# Ruby (RSpec) で並列テストを設定する
<a name="sample-parallel-test-ruby"></a>

以下は、Ubuntu プラットフォームでの RSpec による並列テストの実行を示す `buildspec.yml` のサンプルです。

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Ruby dependencies'
      - apt-get update
      - apt-get install -y ruby ruby-dev build-essential
      - gem install bundler
      - bundle install
  build:
    commands:
      - echo 'Running Ruby Tests'
      - |
         codebuild-tests-run \
          --test-command 'bundle exec rspec' \
          --files-search "codebuild-glob-search 'spec/**/*_spec.rb'" \
          --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo "Test execution completed"
```