This page is a rough idea-sheet for whats next in Pax Exam 5.
We don't know what will actually make it into the final release but take those things as moonshot ideas that i think are worth doing on the Pax Exam Platform.
Ease of Use
The API contains many methods used in previous versions and should be cleaned up for easier use and more straigt forward implementation.
PAXEXAM-867Getting issue details...
Currently Pax Exam has a large dependecy chain, we should check if we can cut down this or at least make it more clear why we need a given dependency
PAXEXAM-868Getting issue details...
Asciidoc User Manual
Confluence is not the best way to create and maintain our documentation. Other OPS4J projects have successfully moved to Asciidoc, and we should do the same for Pax Exam.
PAXEXAM-906Getting issue details...
Currently only Test Containers are easy to add. Other parts of the Pax Exam System are very rigid and hard to extend.
Examples of pieces in the system that one might want to extend/change without affecting Pax Exams core:
- Provisioning is currently (like all other Pax projects) tied to Pax Url. Which is very flexible but you might for example just swap out Pax URL based provisioning for the Gradle Resolver. Something that is very useful in CI builds because you can leverage all the goodies that recently came to gradle (Build Cache, Parallel Download etc). This also would avoid confusion where some parts of the build are loaded via one system (gradle, maven, sbt whatever) and the other by another one (Pax Urls Aether Client).
- Allow alternative "Kernels": Implementations of org.ops4j.pax.exam.ExamSystem.
Acceptance Test API
Pax Exam already has very good APIs to run OSGi based integration tests using the JUnit4 Runner.
Almost unknown (to many i think) is currently is called "Plumbing API". It allows the user to use Pax Exam as a Harness in Tests or even as Container Bootstrapper (think Spring Boot and friends).
But, this already existing API can be leveraged by a higher level API to allow simpler Blackbox Testing Scenarios.
PAXEXAM-873Getting issue details...
This is about making Pax Exam a viable alternative for Integration Testing even when using Bndtools.
PAXEXAM-846Getting issue details...
This is about enabling Tests for the PDE Platform so tests can use the native artifacts (features, target platform, P2 repro, Workspaces, ...)
PAXEXAM-832Getting issue details...
JUnit 5 Driver
Support the JUnit 5 Jupiter API to the same degree as JUnit 4 (or better).
PAXEXAM-866Getting issue details...
Support for multiple (even non-test) Container in one Test/Suite/Module
Currently only one testcontainer is allowed (or picked up). We should enable to allow a Per-Test (or even per test method) choice as we as support for Users to fire up additional containers (e.g. for client/server tests).
PAXEXAM-869Getting issue details...