[ 
https://issues.apache.org/jira/browse/SUREFIRE-2147?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Geoff Soutter updated SUREFIRE-2147:
------------------------------------
    Summary: Report for JUnit5 DynamicContainer/DynamicTest doesn't preserve 
the nested structure  (was: Surefire report for JUnit5 
DynamicContainer/DynamicTest doesn't work with HTML generation)

> Report for JUnit5 DynamicContainer/DynamicTest doesn't preserve the nested 
> structure
> ------------------------------------------------------------------------------------
>
>                 Key: SUREFIRE-2147
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-2147
>             Project: Maven Surefire
>          Issue Type: Bug
>            Reporter: Geoff Soutter
>            Priority: Major
>
> h3. Description of the issue
> I created a simple example of JUnit5 DynamicContainer/DynamicTest
> {code:java}
> package samplepackage;
> ...
> public class SampleTest {
>     @TestFactory
>     Collection<DynamicContainer> createDynamicTests() {
>         List<DynamicTest> testList = new ArrayList<>();
>         testList.add(DynamicTest.dynamicTest("test1", new MyExecutable()));
>         testList.add(DynamicTest.dynamicTest("test2", new MyExecutable()));
>         List<DynamicContainer> root = new ArrayList<>();
>         root.add(DynamicContainer.dynamicContainer("aFolder", testList));
>         return root;
>     }
>     private static class MyExecutable implements Executable {
>         @Override
>         public void execute() throws Throwable {
>         }
>     }
> }
> {code}
> When I run this in IDEA. I get the following structure
>  * SampleTest
>  ** createDynamicTests()
>  *** aFolder
>  **** test1
>  **** test2
> Here we can see that dynamic tests are represented by IDEA as nested children 
> of the test method. We can open and close the "virtual packages" created as 
> usual to explore in the dynamically created test results. It is not a "flat 
> list".
> Using surefire 3.0.0-m7, with the example "phrased" reporter configuration 
> enabled, it creates contents in surefire-reports like so:
> {code:java}
>   <testcase name="aFolder createDynamicTests() test1" 
> classname="samplepackage.SampleTest" time="0.02"/>
>   <testcase name="aFolder createDynamicTests() test2" 
> classname="samplepackage.SampleTest" time="0.001"/>
> {code}
> Here all the nested synthetic tests are created as the child of a single 
> class in the HTML report. The folder name is injected into the "method" name. 
> That is, from a reporting perspective, they are created as a flat list.
> This doesn't scale nicely as the number of tests in the dynamically created 
> "folder" structure grows. We can't view the different DynamicContainers 
> separately in the rendered HTML reports. We can't get history on any 
> particular DynamicContainer in the rendered HTML reports.
> h3. Solution Ideas
> I think what we want here is that dynamic tests in folders should have those 
> folders structured as synthetic packages. This allows us the benefits of 
> having the nested structure modelled correctly in the HTML report. I think we 
> could do that by moving the method name and folder name from name= into 
> classname=
> {code:java}
>   <testcase name="test1" 
> classname="samplepackage.SampleTest.createDynamicTests().aFolder.Test" 
> time="0.02"/>
>   <testcase name="test2" 
> classname="samplepackage.SampleTest.createDynamicTests().aFolder.Test" 
> time="0.001"/>
> {code}
> A compromise I have made here is that I have injected ".Test" at the end as 
> it allows the entire DynamicContainer "folder" structure to be visible in the 
> virtual package name - DynamicTests don't have a "class" concept.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to