Pax Exam 5 Vision

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

Clean-up API

The API contains many methods used in previous versions and should be cleaned up for easier use and more straigt forward implementation.

PAXEXAM-867 - Getting issue details... STATUS

Cut-down Dependencies

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-868 - Getting issue details... STATUS

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-906 - Getting issue details... STATUS

New APIs

Extension API

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-873 - Getting issue details... STATUS

Bndtools Integration

This is about making Pax Exam a viable alternative for Integration Testing even when using Bndtools.

PAXEXAM-846 - Getting issue details... STATUS

PDE Integration

This is about enabling Tests for the PDE Platform so tests can use the native artifacts (features, target platform, P2 repro, Workspaces, ...)

PAXEXAM-832 - Getting issue details... STATUS

JUnit 5 Driver

Support the JUnit 5 Jupiter API to the same degree as JUnit 4 (or better).

PAXEXAM-866 - Getting issue details... STATUS

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-869 - Getting issue details... STATUS