jakartaee / platform

The Jakarta EE Platform project produces the Jakarta EE platform specification, which is an umbrella specification that aggregates all other Jakarta EE specifications.
https://jakartaee.github.io/platform/
Eclipse Public License 2.0
197 stars 65 forks source link

Create guidance on how to produce standalone TCKs #333

Open starksm64 opened 3 years ago

starksm64 commented 3 years ago

Is your feature request related to a problem? Please describe. We have a mix of testing technologies that don't mix well together to enable a collection of standalone TCKs that can be composed to produce various profile level TCKs. We need to provide guidance on how to achieve this.

Describe the solution you'd like The specification project should own the TCK source and produce the TCK artifacts. This needs to be done in such a way that the artifacts can be run to validate implementations at the individual specification level, as well as integrated into platform level TCKs.

Describe alternatives you've considered Jakarta Batch, Bean Validation and CDI make use of TestNG and Arquillian with maven artifacts to enable composition. Ondro Mihályi looked at this approach and also Junit 5 in the context of Jakarta Batch.

Additional context An investigation of using TestNG/Arquillian and Junit 5 to update the Jakarta Batch TCK was described in this blog by Ondro Mihályi: https://ondro.inginea.eu/index.php/possible-ways-to-use-arquillian-in-jakarta-ee-tcks/

scottmarlow commented 3 years ago

I volunteer to ping projects for feedback, especially those that have submitted ballots for EE 10 some of which already have standalone TCKs as noted in parens below. :

IMO we can start developing the Core Profile TCK tests as each Standalone SPEC team stages (TCK) test artifacts that can be consumed by the Core Profile TCK. IMO, the Core Profile TCK can cache the staged artifacts that it consumes such that it can control the frequency of syncing with the latest (breaking) test changes from the specification projects (to reduce the friction for the Profile TCK team and also avoid daily fires when staged specification TCK test classes change). Arquillian seems important for working with various Core Profile implementations.

Another requirement to work out is how TCK tests state the Specification requirement that they are testing such that users running the TCK tests can quickly identify the Specification text that describes the requirement (e.g. AssertionIDs are an example of test sources including a unique identifier that can be looked up in a separate table to identify the exact Specification section describes the requirement).

starksm64 commented 3 years ago

I would order the priority to match those specifications that are currently being targeted for the core profile. I think there is some confusion/concern that there is going to be a big impact to the existing web and platform CTS projects. I'm envisioning a new core profile platform TCK that is a composition of the independent specification TCKs with additional profile specific tests. I need to create an EE10 issue to explicitly track the specifications that will be in the core profile, but it currently is CDI, JSON*, Rest, Annotations, Config,

scottmarlow commented 3 years ago

Proposal document is at https://docs.google.com/document/d/1yDXTUUULUrFrUi1DV_9OcBKIiZLVxrZkA38MMvYdP-U/edit#