| [[overview]] |
| == Overview |
| |
| The goal of this document is to provide comprehensive reference documentation for |
| programmers writing tests, extension authors, and engine authors as well as build tool |
| and IDE vendors. |
| |
| ifdef::backend-html5[] |
| ifdef::linkToPdf[] |
| This document is also available as a link:{userGuidePdfFileName}[PDF download]. |
| endif::linkToPdf[] |
| endif::backend-html5[] |
| |
| [[overview-what-is-junit-5]] |
| === What is JUnit 5? |
| |
| Unlike previous versions of JUnit, JUnit 5 is composed of several different modules from |
| three different sub-projects. |
| |
| **JUnit 5 = _JUnit Platform_ + _JUnit Jupiter_ + _JUnit Vintage_** |
| |
| The **JUnit Platform** serves as a foundation for <<launcher-api,launching testing |
| frameworks>> on the JVM. It also defines the `{TestEngine}` API for developing a testing |
| framework that runs on the platform. Furthermore, the platform provides a |
| <<running-tests-console-launcher,Console Launcher>> to launch the platform from the |
| command line and the <<junit-platform-suite-engine>> for running a custom test suite using |
| one or more test engines on the platform. First-class support for the JUnit Platform also |
| exists in popular IDEs (see <<running-tests-ide-intellij-idea>>, |
| <<running-tests-ide-eclipse>>, <<running-tests-ide-netbeans>>, and |
| <<running-tests-ide-vscode>>) and build tools (see <<running-tests-build-gradle>>, |
| <<running-tests-build-maven>>, and <<running-tests-build-ant>>). |
| |
| **JUnit Jupiter** is the combination of the new <<writing-tests,programming model>> and |
| <<extensions,extension model>> for writing tests and extensions in JUnit 5. The Jupiter |
| sub-project provides a `TestEngine` for running Jupiter based tests on the platform. |
| |
| **JUnit Vintage** provides a `TestEngine` for running JUnit 3 and JUnit 4 based tests on |
| the platform. It requires JUnit 4.12 or later to be present on the class path or module |
| path. |
| |
| [[overview-java-versions]] |
| === Supported Java Versions |
| |
| JUnit 5 requires Java 8 (or higher) at runtime. However, you can still test code that |
| has been compiled with previous versions of the JDK. |
| |
| [[overview-getting-help]] |
| === Getting Help |
| |
| Ask JUnit 5 related questions on {StackOverflow} or chat with the community on {Gitter}. |
| |
| [[overview-getting-started]] |
| === Getting Started |
| |
| [[overview-getting-started-junit-artifacts]] |
| ==== Downloading JUnit Artifacts |
| |
| To find out what artifacts are available for download and inclusion in your project, refer |
| to <<dependency-metadata>>. To set up dependency management for your build, refer to |
| <<running-tests-build>> and the <<overview-getting-started-example-projects>>. |
| |
| [[overview-getting-started-features]] |
| ==== JUnit 5 Features |
| |
| To find out what features are available in JUnit 5 and how to use them, read the |
| corresponding sections of this User Guide, organized by topic. |
| |
| * <<writing-tests, Writing Tests in JUnit Jupiter>> |
| * <<migrating-from-junit4, Migrating from JUnit 4 to JUnit Jupiter>> |
| * <<running-tests>> |
| * <<extensions, Extension Model for JUnit Jupiter>> |
| * Advanced Topics |
| - <<launcher-api>> |
| - <<testkit>> |
| |
| [[overview-getting-started-example-projects]] |
| ==== Example Projects |
| |
| To see complete, working examples of projects that you can copy and experiment with, the |
| {junit5-samples-repo}[`junit5-samples`] repository is a good place to start. The |
| `junit5-samples` repository hosts a collection of sample projects based on JUnit Jupiter, |
| JUnit Vintage, and other testing frameworks. You'll find appropriate build scripts (e.g., |
| `build.gradle`, `pom.xml`, etc.) in the example projects. The links below highlight some |
| of the combinations you can choose from. |
| |
| * For Gradle and Java, check out the `{junit5-jupiter-starter-gradle}` project. |
| * For Gradle and Kotlin, check out the `{junit5-jupiter-starter-gradle-kotlin}` project. |
| * For Gradle and Groovy, check out the `{junit5-jupiter-starter-gradle-groovy}` project. |
| * For Maven, check out the `{junit5-jupiter-starter-maven}` project. |
| * For Ant, check out the `{junit5-jupiter-starter-ant}` project. |