| [[appendix]] |
| == Appendix |
| |
| [[reproducible-builds]] |
| === Reproducible Builds |
| |
| Starting with version 5.7, JUnit 5 aims for its non-javadoc JARs to be |
| https://reproducible-builds.org/[reproducible]. |
| |
| Under identical build conditions, such as Java version, repeated builds should provide the |
| same output byte-for-byte. |
| |
| This means that anyone can reproduce the build conditions of the artifacts on Maven |
| Central/Sonatype and produce the same output artifact locally, confirming that the |
| artifacts in the repositories were actually generated from this source code. |
| |
| [[dependency-metadata]] |
| === Dependency Metadata |
| |
| Artifacts for final releases and milestones are deployed to {Maven_Central}, and snapshot |
| artifacts are deployed to Sonatype's {snapshot-repo}[snapshots repository] under |
| {snapshot-repo}/org/junit/[/org/junit]. |
| |
| [[dependency-metadata-junit-platform]] |
| ==== JUnit Platform |
| |
| * *Group ID*: `org.junit.platform` |
| * *Version*: `{platform-version}` |
| * *Artifact IDs*: |
| `junit-platform-commons`:: |
| Common APIs and support utilities for the JUnit Platform. Any API annotated with |
| `@API(status = INTERNAL)` is intended solely for usage within the JUnit framework |
| itself. _Any usage of internal APIs by external parties is not supported!_ |
| `junit-platform-console`:: |
| Support for discovering and executing tests on the JUnit Platform from the console. |
| See <<running-tests-console-launcher>> for details. |
| `junit-platform-console-standalone`:: |
| An executable JAR with all dependencies included is provided in Maven Central under the |
| https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone[junit-platform-console-standalone] |
| directory. See <<running-tests-console-launcher>> for details. |
| `junit-platform-engine`:: |
| Public API for test engines. See <<launcher-api-engines-custom>> for details. |
| `junit-platform-jfr`:: |
| Provides a `LauncherDiscoveryListener` and `TestExecutionListener` for Java Flight |
| Recorder events on the JUnit Platform. See <<running-tests-listeners-flight-recorder>> |
| for details. |
| `junit-platform-launcher`:: |
| Public API for configuring and launching test plans -- typically used by IDEs and |
| build tools. See <<launcher-api>> for details. |
| `junit-platform-reporting`:: |
| `TestExecutionListener` implementations that generate test reports -- typically used |
| by IDEs and build tools. See <<junit-platform-reporting>> for details. |
| `junit-platform-runner`:: |
| Runner for executing tests and test suites on the JUnit Platform in a JUnit 4 |
| environment. See <<running-tests-junit-platform-runner>> for details. |
| `junit-platform-suite`:: |
| JUnit Platform Suite artifact that transitively pulls in dependencies on |
| `junit-platform-suite-api` and `junit-platform-suite-engine` for simplified dependency |
| management in build tools such as Gradle and Maven. |
| `junit-platform-suite-api`:: |
| Annotations for configuring test suites on the JUnit Platform. Supported by the |
| <<junit-platform-suite-engine, JUnit Platform Suite Engine>> and the |
| <<running-tests-junit-platform-runner, JUnitPlatform runner>>. |
| `junit-platform-suite-commons`:: |
| Common support utilities for executing test suites on the JUnit Platform. |
| `junit-platform-suite-engine`:: |
| Engine that executes test suites on the JUnit Platform; only required at runtime. See |
| <<junit-platform-suite-engine,JUnit Platform Suite Engine>> for details. |
| `junit-platform-testkit`:: |
| Provides support for executing a test plan for a given `TestEngine` and then |
| accessing the results via a fluent API to verify the expected results. |
| |
| [[dependency-metadata-junit-jupiter]] |
| ==== JUnit Jupiter |
| |
| * *Group ID*: `org.junit.jupiter` |
| * *Version*: `{jupiter-version}` |
| * *Artifact IDs*: |
| `junit-jupiter`:: |
| JUnit Jupiter aggregator artifact that transitively pulls in dependencies on |
| `junit-jupiter-api`, `junit-jupiter-params`, and `junit-jupiter-engine` for |
| simplified dependency management in build tools such as Gradle and Maven. |
| `junit-jupiter-api`:: |
| JUnit Jupiter API for <<writing-tests,writing tests>> and <<extensions,extensions>>. |
| `junit-jupiter-engine`:: |
| JUnit Jupiter test engine implementation; only required at runtime. |
| `junit-jupiter-params`:: |
| Support for <<writing-tests-parameterized-tests,parameterized tests>> in JUnit Jupiter. |
| `junit-jupiter-migrationsupport`:: |
| Support for migrating from JUnit 4 to JUnit Jupiter; only required for support for |
| JUnit 4's `@Ignore` annotation and for running selected JUnit 4 rules. |
| |
| [[dependency-metadata-junit-vintage]] |
| ==== JUnit Vintage |
| |
| * *Group ID*: `org.junit.vintage` |
| * *Version*: `{vintage-version}` |
| * *Artifact ID*: |
| `junit-vintage-engine`:: |
| JUnit Vintage test engine implementation that allows one to run _vintage_ JUnit tests |
| on the JUnit Platform. _Vintage_ tests include those written using JUnit 3 or JUnit 4 |
| APIs or tests written using testing frameworks built on those APIs. |
| |
| [[dependency-metadata-junit-bom]] |
| ==== Bill of Materials (BOM) |
| |
| The _Bill of Materials_ POM provided under the following Maven coordinates can be used to |
| ease dependency management when referencing multiple of the above artifacts using |
| https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies[Maven] |
| or https://docs.gradle.org/current/userguide/managing_transitive_dependencies.html#sec:bom_import[Gradle]. |
| |
| * *Group ID*: `org.junit` |
| * *Artifact ID*: `junit-bom` |
| * *Version*: `{bom-version}` |
| |
| [[dependency-metadata-dependencies]] |
| ==== Dependencies |
| |
| Most of the above artifacts have a dependency in their published Maven POMs on the |
| following _@API Guardian_ JAR. |
| |
| * *Group ID*: `org.apiguardian` |
| * *Artifact ID*: `apiguardian-api` |
| * *Version*: `{apiguardian-version}` |
| |
| In addition, most of the above artifacts have a direct or transitive dependency on the |
| following _OpenTest4J_ JAR. |
| |
| * *Group ID*: `org.opentest4j` |
| * *Artifact ID*: `opentest4j` |
| * *Version*: `{ota4j-version}` |
| |
| [[dependency-diagram]] |
| === Dependency Diagram |
| |
| [plantuml, component-diagram, svg] |
| ---- |
| skinparam { |
| defaultFontName Open Sans |
| } |
| |
| package org.junit.jupiter { |
| [junit-jupiter] as jupiter |
| [junit-jupiter-api] as jupiter_api |
| [junit-jupiter-engine] as jupiter_engine |
| [junit-jupiter-params] as jupiter_params |
| [junit-jupiter-migrationsupport] as jupiter_migration_support |
| } |
| |
| package org.junit.vintage { |
| [junit-vintage-engine] as vintage_engine |
| } |
| |
| package org.junit.platform { |
| [junit-platform-commons] as commons |
| [junit-platform-console] as console |
| [junit-platform-engine] as engine |
| [junit-platform-jfr] as jfr |
| [junit-platform-launcher] as launcher |
| [junit-platform-reporting] as reporting |
| [junit-platform-runner] as runner |
| [junit-platform-suite] as suite |
| [junit-platform-suite-api] as suite_api |
| [junit-platform-suite-commons] as suite_commons |
| [junit-platform-suite-engine] as suite_engine |
| [junit-platform-testkit] as testkit |
| } |
| |
| package "JUnit 4" { |
| [junit:junit] as junit4 |
| } |
| |
| package org.opentest4j { |
| [opentest4j] |
| } |
| |
| package org.apiguardian { |
| [apiguardian-api] as apiguardian |
| note bottom of apiguardian #white |
| All artifacts except |
| opentest4j and junit:junit |
| have a dependency on this |
| artifact. The edges have |
| been omitted from this |
| diagram for the sake of |
| readability. |
| endnote |
| } |
| |
| jupiter ..> jupiter_api |
| jupiter ..> jupiter_params |
| jupiter ..> jupiter_engine |
| |
| jupiter_api ....> opentest4j |
| jupiter_api ...> commons |
| |
| jupiter_engine ...> engine |
| jupiter_engine ..> jupiter_api |
| |
| jupiter_params ..> jupiter_api |
| jupiter_migration_support ..> jupiter_api |
| jupiter_migration_support ...> junit4 |
| |
| console ..> launcher |
| console ..> reporting |
| |
| launcher ..> engine |
| |
| jfr ..> launcher |
| |
| engine ....> opentest4j |
| engine ..> commons |
| |
| reporting ..> launcher |
| |
| runner ..> suite_commons |
| runner ...> junit4 |
| |
| suite ..> suite_api |
| suite ..> suite_engine |
| |
| suite_engine ..> suite_commons |
| |
| suite_commons ..> launcher |
| suite_commons ..> suite_api |
| |
| testkit ....> opentest4j |
| testkit ..> launcher |
| |
| vintage_engine ...> engine |
| vintage_engine ..> junit4 |
| ---- |