Skip to content

Split Tests Java

Actions

About

Splits a JUnit test suite for parallelization with equal time
v1.0.33
Latest
Star (0)

Integration testsRelease

@donnerbart/split-tests-java-action

Divides a test suite into groups with equal execution time, based on prior test timings.

This ensures optimal parallel execution. Since test file runtimes can vary significantly, splitting them evenly without considering timing may result in inefficient grouping.

Usage

name: Integration Testson:
pull_request:
branches: '**'workflow_dispatch:
concurrency:
group: integration-test-${{ github.ref }}cancel-in-progress: trueenv:
split-total: 10jobs:
generate-split-index-json:
name: Generate split indexesruns-on: ubuntu-latestoutputs:
json: ${{ steps.generate.outputs.split-index-json }}steps:
- name: Generate split index list id: generateuses: donnerbart/split-tests-java-action/generate-split-index-json@v1with:
split-total: ${{ env.split-total }}integration-test:
name: 'Split #${{ matrix.split-index }}'runs-on: ubuntu-latestneeds:
- generate-split-index-jsonstrategy:
fail-fast: falsematrix:
split-index: ${{ fromjson(needs.generate-split-index-json.outputs.json) }}steps:
- name: Checkout repositoryuses: actions/checkout@v4with:
path: project
- name: Checkout JUnit reportsuses: donnerbart/split-tests-java-action/checkout-junit-reports@v1with:
git-branch: junit-reports/${{ github.base_ref }}path: junit-reports
- name: Set up JDK 21uses: actions/setup-java@v4with:
distribution: temurinjava-version: 21
- name: Set up Gradleuses: gradle/actions/setup-gradle@v4
- name: Split testsid: split-testsuses: donnerbart/split-tests-java-action@v1with:
split-index: ${{ matrix.split-index }}split-total: ${{ env.split-total }}glob: '**/project/src/integrationTest/**/*IT.java'junit-glob: '**/junit-reports/*.xml'format: 'gradle'new-test-time: 'average'debug: true
- name: Run integration testsrun: ./gradlew :integrationTest ${{ steps.split-tests.outputs.test-suite }}
- name: Upload JUnit report artifactuses: actions/upload-artifact@v4with:
name: junit-xml-reports-${{ matrix.split-index }}path: '**/test-results/integrationTest/*.xml'merge-junit-reports:
name: Merge JUnit reportsruns-on: ubuntu-latestneeds:
- integration-testpermissions:
contents: writesteps:
- name: Merge JUnit reportsuses: donnerbart/split-tests-java-action/merge-junit-reports@v1with:
git-branch: junit-reports/${{ github.base_ref }}artifact-name: junit-xml-reportssplit-artifact-pattern: junit-xml-reports-*

Split Tests Java is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

Splits a JUnit test suite for parallelization with equal time
v1.0.33
Latest

Split Tests Java is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.