Run unit tests, integration tests, or slow integration tests matching CI. Use to validate changes before submitting a PR.
Run tests matching CI configuration.
unit or no argument — unit tests./mvnw clean test -q -B -D"checkstyle.skip"
CI runs this on:
integration — integration tests (excludes slow)./mvnw -B clean integration-test -Dcheckstyle.skip -DskipUTs=true -DexcludedGroups=slow
CI runs this on JDK 11, 17, 21, 25 (ubuntu only).
slow./mvnw -B clean integration-test -Dcheckstyle.skip -DskipUTs=true \
-Dit.test=org.apache.skywalking.library.elasticsearch.ElasticSearchIT \
-Dfailsafe.failIfNoSpecifiedTests=false
CI runs on JDK 11 (ubuntu only). Currently only ElasticSearch/OpenSearch IT is in the slow matrix.
# Unit tests for a specific module
./mvnw clean test -pl oap-server/analyzer/<module-name> -D"checkstyle.skip"
# Integration tests for a specific module
./mvnw -B clean integration-test -pl oap-server/analyzer/<module-name> -Dcheckstyle.skip -DskipUTs=true
org.junit.jupiter)| Type | Pattern | Maven phase |
|---|---|---|
| Unit tests | *Test.java | test |
| Integration tests | IT*.java or *IT.java | integration-test |
Tests tagged with @Tag("slow") are excluded from the normal integration-test job and run separately in the slow-integration-test job. Use this tag for tests that spin up external services (Elasticsearch, etc.) and take significant time.
All three CI jobs retry on failure (run the same command twice with ||). This handles flaky tests but masks intermittent issues — if a test fails locally, investigate rather than relying on retries.
CI workflow: .github/workflows/skywalking.yaml
| Job | JDK | OS | Timeout |
|---|---|---|---|
unit-test | 11 (3 OS) + 17, 21, 25 (ubuntu) | ubuntu, macOS, Windows | 30 min |
integration-test | 11, 17, 21, 25 | ubuntu | 60 min |
slow-integration-test | 11 | ubuntu | 60 min |