1616package io .qameta .allure .awaitility ;
1717
1818import io .qameta .allure .model .Status ;
19+ import io .qameta .allure .model .StepResult ;
1920import io .qameta .allure .model .TestResult ;
21+ import org .junit .jupiter .api .DynamicNode ;
22+ import org .junit .jupiter .api .DynamicTest ;
2023import org .junit .jupiter .api .Test ;
21- import org .junit .jupiter .api .TestInstance ;
24+ import org .junit .jupiter .api .TestFactory ;
2225
2326import java .time .Duration ;
2427import java .time .temporal .ChronoUnit ;
2528import java .util .List ;
2629import java .util .concurrent .atomic .AtomicInteger ;
30+ import java .util .stream .Stream ;
2731
2832import static io .qameta .allure .test .RunUtils .runWithinTestContext ;
2933import static org .assertj .core .api .Assertions .assertThat ;
3034import static org .awaitility .Awaitility .await ;
3135import static org .hamcrest .Matchers .is ;
32- import static org .junit .jupiter .api .Assertions .assertAll ;
3336import static org .junit .jupiter .api .Assertions .assertEquals ;
37+ import static org .junit .jupiter .api .DynamicTest .dynamicTest ;
3438
35- @ TestInstance (TestInstance .Lifecycle .PER_METHOD )
3639class ConditionListenersPositiveTest {
3740
3841 /**
@@ -45,8 +48,8 @@ class ConditionListenersPositiveTest {
4548 * <li>2. Top level step has passed status</li>
4649 * <li>3. Top level step has default name</li>
4750 */
48- @ Test
49- void globalSettingsAwaitWoAliasCheckTopLevelPassedStep () {
51+ @ TestFactory
52+ Stream < DynamicNode > globalSettingsAwaitWoAliasCheckTopLevelPassedStep () {
5053 final List <TestResult > testResult = runWithinTestContext (() -> {
5154 final AtomicInteger atomicInteger = new AtomicInteger (0 );
5255 await ().with ()
@@ -57,19 +60,20 @@ void globalSettingsAwaitWoAliasCheckTopLevelPassedStep() {
5760 },
5861 AllureAwaitilityListener ::setLifecycle
5962 ).getTestResults ();
60- assertAll (
61- () -> assertEquals (
62- 1 , testResult .get (0 ).getSteps ().size (),
63- "Exactly 1 top level step for 1 awaitility condition"
63+
64+ return Stream .of (
65+ DynamicTest .dynamicTest ("Exactly 1 top level step for 1 awaitility condition" , () ->
66+ assertThat (testResult .get (0 ).getSteps ())
67+ .hasSize (1 )
6468 ),
65- ( ) -> assertEquals (
66- Status . PASSED , testResult .get (0 ).getSteps (). get ( 0 ). getStatus (),
67- "Top level step has passed status"
69+ DynamicTest . dynamicTest ( "Top level step has passed status" , ( ) ->
70+ assertThat ( testResult .get (0 ).getSteps ())
71+ . allMatch ( step -> Status . PASSED . equals ( step . getStatus ()))
6872 ),
69- () -> assertEquals (
70- "Awaitility: Starting evaluation" ,
71- testResult . get ( 0 ). getSteps (). get ( 0 ). getName (),
72- "Top level step has default name because await() wo alias"
73+ DynamicTest . dynamicTest ( "Top level step has default name because await() wo alias" , () ->
74+ assertThat ( testResult . get ( 0 ). getSteps ())
75+ . extracting ( StepResult :: getName )
76+ . containsExactly ( "Awaitility: Starting evaluation" )
7377 )
7478 );
7579 }
@@ -111,8 +115,8 @@ void globalSettingsAwaitWithAliasCheckTopLevelPassedStep() {
111115 * <li>2. All second-level steps should have passed status for successful condition evaluation</li>
112116 * <li>3. All second-level steps should have information about polling intervals and evaluation</li>
113117 */
114- @ Test
115- void globalSettingsCheckAwaitWoAliasSecondLevelPassedSteps () {
118+ @ TestFactory
119+ Stream < DynamicNode > globalSettingsCheckAwaitWoAliasSecondLevelPassedSteps () {
116120 final List <TestResult > testResult = runWithinTestContext (() -> {
117121 final AtomicInteger atomicInteger = new AtomicInteger (0 );
118122 await ().with ()
@@ -123,43 +127,47 @@ void globalSettingsCheckAwaitWoAliasSecondLevelPassedSteps() {
123127 },
124128 AllureAwaitilityListener ::setLifecycle
125129 ).getTestResults ();
126- assertAll (
127- () -> assertEquals (
128- 4 , testResult .get (0 ).getSteps ().get (0 ).getSteps ().size (),
129- "Exactly 4 second level steps for 4 polling iterations"
130+
131+ return Stream .of (
132+ dynamicTest ("Exactly 4 second level steps for 4 polling iterations" , () ->
133+ assertThat (testResult .get (0 ).getSteps ().get (0 ).getSteps ())
134+ .hasSize (4 )
130135 ),
131- () -> assertEquals (
132- 4 , (int ) testResult .get (0 ).getSteps ().get (0 ).getSteps ().stream ()
133- .filter (x -> x .getStatus ().equals (Status .PASSED )).count (),
134- "All second level steps has passed statuses"
136+ dynamicTest ("All second level steps has passed statuses" , () ->
137+ assertThat (testResult .get (0 ).getSteps ().get (0 ).getSteps ())
138+ .allMatch (x -> x .getStatus ().equals (Status .PASSED ))
135139 ),
136- () -> assertThat (testResult .get (0 ).getSteps ().get (0 ).getSteps ().get (0 ).getName ())
137- .contains ("Lambda expression in io.qameta.allure.awaitility.ConditionListenersPositiveTest" )
138- .contains ("that uses java.util.concurrent.atomic.AtomicInteger:" )
139- .contains ("expected <3> but was <0>" )
140- .contains ("elapsed time" )
141- .contains ("remaining time" )
142- .contains ("last poll interval was" ),
143- () -> assertThat (testResult .get (0 ).getSteps ().get (0 ).getSteps ().get (1 ).getName ())
144- .contains ("Lambda expression in io.qameta.allure.awaitility.ConditionListenersPositiveTest" )
145- .contains ("that uses java.util.concurrent.atomic.AtomicInteger:" )
146- .contains ("expected <3> but was <1>" )
147- .contains ("elapsed time" )
148- .contains ("remaining time" )
149- .contains ("last poll interval was" ),
150- () -> assertThat (testResult .get (0 ).getSteps ().get (0 ).getSteps ().get (2 ).getName ())
151- .contains ("Lambda expression in io.qameta.allure.awaitility.ConditionListenersPositiveTest" )
152- .contains ("that uses java.util.concurrent.atomic.AtomicInteger:" )
153- .contains ("expected <3> but was <2>" )
154- .contains ("elapsed time" )
155- .contains ("remaining time" )
156- .contains ("last poll interval was" ),
157- () -> assertThat (testResult .get (0 ).getSteps ().get (0 ).getSteps ().get (3 ).getName ())
158- .contains ("Lambda expression in io.qameta.allure.awaitility.ConditionListenersPositiveTest" )
159- .contains ("that uses java.util.concurrent.atomic.AtomicInteger:" )
160- .contains ("reached its end value of <3> after" )
161- .contains ("remaining time" )
162- .contains ("last poll interval was" )
140+ dynamicTest ("Second level step 1 name" , () ->
141+ assertThat (testResult .get (0 ).getSteps ().get (0 ).getSteps ().get (0 ).getName ())
142+ .contains ("io.qameta.allure.awaitility.ConditionListenersPositiveTest" )
143+ .contains ("expected <3> but was <0>" )
144+ .contains ("elapsed time" )
145+ .contains ("remaining time" )
146+ .contains ("last poll interval was" )
147+ ),
148+ dynamicTest ("Second level step 2 name" , () ->
149+ assertThat (testResult .get (0 ).getSteps ().get (0 ).getSteps ().get (1 ).getName ())
150+ .contains ("io.qameta.allure.awaitility.ConditionListenersPositiveTest" )
151+ .contains ("expected <3> but was <1>" )
152+ .contains ("elapsed time" )
153+ .contains ("remaining time" )
154+ .contains ("last poll interval was" )
155+ ),
156+ dynamicTest ("Second level step 3 name" , () ->
157+ assertThat (testResult .get (0 ).getSteps ().get (0 ).getSteps ().get (2 ).getName ())
158+ .contains ("io.qameta.allure.awaitility.ConditionListenersPositiveTest" )
159+ .contains ("expected <3> but was <2>" )
160+ .contains ("elapsed time" )
161+ .contains ("remaining time" )
162+ .contains ("last poll interval was" )
163+ ),
164+ dynamicTest ("Second level step 4 name" , () ->
165+ assertThat (testResult .get (0 ).getSteps ().get (0 ).getSteps ().get (3 ).getName ())
166+ .contains ("io.qameta.allure.awaitility.ConditionListenersPositiveTest" )
167+ .contains ("reached its end value of <3> after" )
168+ .contains ("remaining time" )
169+ .contains ("last poll interval was" )
170+ )
163171 );
164172 }
165173
0 commit comments