We currently do not test against once against each of the three individual runtimes Jersey, Resteasy, and Wink, but three times against a mixture of them. Thus, we may not catch bugs that exist in reality.
JAX-RS implementations provide a subclass of javax.ws.rs.ext.RuntimeDelegate to provide certain API functionality. A subclass of RuntimeDelegate is looked up via the standard SPI mechanism + a fallback implementation. All three JAX-RS runtimes we test with provide a different implementation of RuntimeDelegate and must therefore be isolated when we execute tests. This is currently not the case. For example, executing the REST API tests with Jersey uses the RuntimeDelegate class provided by Resteasy.
Only include the vendor-specific JAX-RS implementations in their respective Maven profiles. Restructure the test cases accordingly
- instead of subclassing the abstract test classes once for each runtime as it is now:
- define an SPI that allows to start/stop a test container with the desired runtime
- include one SPI Implementation with each profile of a test runtime
- add a JUnit rule that uses the SPI to start/stop the test container
Branch with solution: https://github.com/camunda/camunda-bpm-platform/tree/CAM-4133-2