Skip to content

Introduce @ConfigurationParametersResource for use with @Suite classes #3340

@robinjhector

Description

@robinjhector

(This issue will describe my problems using JUnit together with another engine: Cucumber. But hopefully the proposed solution would increase JUnit Suite usability overall)

According to the documentation. the preferred way of running Cucumber, is via the JUnit Platform Suite.
I can set configuration parameters for the suite launcher discovery request, which then the underlaying engine can use, via @ConfigurationParameter, or @ConfigurationParameters.
It also defaults to parsing a junit-platform.properties file on classpath if found.

As long as I have set my configuration parameters as described above, the cucumber engine boots nicely, and everything works as expected.

However, when running Cucumber on the CLI, or via my IDE´s "run" functionality, Cucumber is not run via the the JUnit platform.
This makes configuring my tests to work with both JUnit and in standalone mode a bit tricky. Cucumber, in standalone mode, will try and look for a cucumber.properties file on classpath.

So I have a few options:

  1. Duplicate the junit-platform.properties file, and save it as cucumber.properties.
    (Sad, keeping two files in sync is always a pain)
  2. Keep my cucumber.properties file, and use annotations for the JUnit Suite (@ConfigurationParameter)
    (Same here, I will have some configuration in-code, and some in a properties file)
  3. Do neither, and use System properties
    (I dislike it because it requires environmental setup for new developers, and may cause system-system variances)

Instead, it would be super helpful if we could feed configuration parameters to the JUnit Platform Suite, from a properties file of choice. If so I could have a single properties file for both my standalone cucumber runs, and my platform suite runs.

Suggestion

My idea is to introduce a new annotation, like:

@ConfigurationParameterFile("myown.properties")

(Naming tbd..)

Which would work just like @ConfigurationParameter, by reading the file and setting the config parameters.
Annotating with both @ConfigurationParameterFile and @ConfigurationParameter should be allowed. Where as @ConfigurationParameter takes precedence for a given key-value.

Deliverables

  • New annotation for supplying configuration parameters via properties file.
  • Extend SuiteLauncherDiscoveryRequestBuilder to parse the properties file, as specified in the new annotation

I'd be happy to take a stab at implementing this via a PR.
Feedback always welcome. Hope my points came across clearly, otherwise please let me know!

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions