Skip to content
Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

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-*

About

Github Action for splitting a Java test suite into equal time groups for parallel execution.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages