RFC: jtreg IntelliJ plugin: run individual test methods
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Tue Jan 7 17:24:06 UTC 2025
Hi Jorn,
your extension to the plugin seems a fine idea - it would be nice to be
able to run specific methods through the plugin.
IMHO, adding parameter types might be a step too far - the general
problem of "predicting" which binary name a source class name might have
is rather hard, and it amounts at heuristics (e.g. there's more to it
than just replacing dots with dollars, as you also take into account as
to whether other class declared with a dollar in their name (!!) are
present).
I wonder if a sensible first step would be to just support the same
logic that jtreg runners also support -- e.g. just a method name. After
all, it is extremely unlikely to have overloaded test methods. E.g. it
seems to me that we're in a case where we can get almost all the benefit
at a fraction of the complexity.
What do you think?
Maurizio
On 07/01/2025 17:05, Jorn Vernee wrote:
> Hello,
>
> Jtreg has for a while now had the ability to attach a query string to
> the name of a test, which then gets used by the JUnit or TestNG runner
> to select a particular test method to run.
>
> The intellij plugin currently doesn't have support for specifying a
> query string, or running individual test methods, so I've put together
> a patch that adds that support [1]. This support has two parts: add a
> 'Query String' field to the jtreg test configuration window in
> intellij, and automatically populate the query string when creating a
> test configuration from a test method in a source file.
>
> Most of this is pretty straightforward. I did run into a small issue:
> when a method takes parameters, junit requires the parameter types the
> be specified as binary names. It takes some work to derive the binary
> name of the parameter types from the source AST representation exposed
> by intellij to the plugin.
>
> Additionally, I had to amend the format of the query strings accepted
> by the TestNG and JUnit runners to accept a trailing list of parameter
> type names. The new format of the query string is:
>
> <methodName>[-<parameterTypeName>[...,<parameterTypeName>]]
>
> Does this seem like a good approach?
>
> Future enhancements could include:
>
> 1.) displaying individual test methods as results in the intellij UI.
> The problem with doing this is currently that jtreg does not forward
> the results from JUnit/TestNG to the observer the plugin attaches to
> jtreg. Adding support for this seems straightforward enough.
> Potentially it would also be useful to 'itemize' other steps that a
> jtreg test takes, such as compiling, or individual @run tags.
> 2.) for parameterized tests, the TestNG runner that comes with
> intellij shows each case (i.e. combination of paramters) individually
> as a result in the UI, and allows re-running just a single case
> through a unique ID. I think JUnit has similar support for this. We
> could add a similar feature to the jtreg plugin.
>
> However, I thought what I have currently is useful enough in isolation
> to start the discussion on this.
>
> Jorn
>
> [1]:
> https://github.com/openjdk/jtreg/compare/master...JornVernee:jtreg:RunMethods
>
More information about the ide-support-dev
mailing list