The integration test pipeline should be adapted to run test suites based on test annotations, to make the test pipeline more maintainable and faster.
Also we want to exclude specific classes based on an annotation.
Background
The pipeline has this structure:
steps:
- name: Object Storage StatusChecker Test
env:
RUN_INTEGRATION_TEST: true
run: ./gradlew extensions:azure:blobstorage:blob-provision:check
- name: CosmosDB Transfer Process Store Test
env:
RUN_INTEGRATION_TEST: true
COSMOS_KEY: ${{ secrets.COSMOS_KEY }}
run: ./gradlew extensions:azure:cosmos:transfer-process-store-cosmos:check
...
This has the following downsides:
Modules are tested in sequence, not making use of gradle parallelism
Modules with integration tests need to be listed in the workflow. There is a risk that one is forgotten
Unit tests contained in those modules are also run, which is wasteful. The time impact is probably very small, but it makes the reports larger than necessary
In the future we might need various type of integration test setups in one module (e.g. test data flow between one type of store and another), so fine-grained control of execution is beneficial
JUnit 5 provides Tags to control test suite execution.
Acceptance Criteria
[x] Integration tests are categorized with Junit tags.
[x] The CI pipeline uses the tags to run integration tests of one type across all modules, without listing the modules.
[x] The CI pipeline for integration tests does not run unit tests.
[x] Update integration test document to highlight use of tagging.
[x] An annotation allows excluding classes from test coverage measurement.
Tasks
[x] Investigate use of Tags in JUnit and Gradle plugin. Propose best way to use and control them (environment variables? meta-annotations?)
Feature: https://github.com/agera-edc/DataSpaceConnector/issues/30 EDC issue : 759
The integration test pipeline should be adapted to run test suites based on test annotations, to make the test pipeline more maintainable and faster.
Also we want to exclude specific classes based on an annotation.
Background
The pipeline has this structure:
This has the following downsides:
JUnit 5 provides Tags to control test suite execution.
Acceptance Criteria
Tasks