3939 * @author Egor Borisov ehborisov@gmail.com
4040 */
4141@ Test
42- public class FeatureCombinationsTest {
42+ public class AllureTestNgTest {
4343
4444 private static final Condition <List <? extends ExecutableItem >> ALL_FINISHED = new Condition <>(items ->
4545 items .stream ().allMatch (item -> item .getStage () == Stage .FINISHED ),
@@ -80,7 +80,7 @@ public void parallelDataProvider() {
8080 List <TestResult > testResult = results .getTestResults ();
8181 List <TestResultContainer > containers = results .getTestContainers ();
8282 assertThat (testResult ).as ("Not all testng case results have been written" ).hasSize (2000 );
83- assertThat (containers ).as ("Not all testng containers have been written" ).hasSize (2 );
83+ assertThat (containers ).as ("Not all testng containers have been written" ).hasSize (3 );
8484 }
8585
8686 @ Test (description = "Singe testng" )
@@ -175,8 +175,6 @@ public void perSuiteFixtures() {
175175
176176 assertThat (testResult ).as ("Unexpected quantity of testng case results has been written" ).hasSize (1 );
177177 List <String > testUuid = singletonList (testResult .get (0 ).getUuid ());
178- assertThat (testContainers ).as ("Unexpected quantity of testng containers has been written" )
179- .hasSize (2 );
180178
181179 assertContainersChildren (testTagName , testContainers , testUuid );
182180 assertContainersChildren (suiteName , testContainers , getUidsByName (testContainers , testTagName ));
@@ -186,26 +184,27 @@ public void perSuiteFixtures() {
186184
187185 @ Test (description = "Class fixtures" )
188186 public void perClassFixtures () {
189- String suiteName = "Test suite 11" ;
190- String testTagName = "Test tag 11" ;
191- String beforeClass = "beforeClass" ;
192- String afterClass = "afterClass" ;
193-
194187 runTestNgSuites ("suites/per-class-fixtures-combination.xml" );
188+ assertThat (results .getTestResults ())
189+ .extracting (TestResult ::getName )
190+ .containsExactlyInAnyOrder ("test1" , "test2" );
195191
196- List <TestResult > testResults = results .getTestResults ();
197- List <TestResultContainer > testContainers = results .getTestContainers ();
198-
199- assertThat (testResults ).as ("Unexpected quantity of testng case results has been written" ).hasSize (2 );
200- assertThat (testContainers ).as ("Unexpected quantity of testng containers has been written" ).hasSize (2 );
192+ assertThat (results .getTestContainers ())
193+ .flatExtracting (TestResultContainer ::getBefores )
194+ .extracting (FixtureResult ::getName )
195+ .containsExactlyInAnyOrder ("beforeClass" );
201196
202- List <String > uuids = testResults .stream ().map (TestResult ::getUuid ).collect (Collectors .toList ());
197+ assertThat (results .getTestContainers ())
198+ .flatExtracting (TestResultContainer ::getAfters )
199+ .extracting (FixtureResult ::getName )
200+ .containsExactlyInAnyOrder ("afterClass" );
203201
204- assertContainersChildren ( testTagName , testContainers , uuids );
205- assertContainersChildren ( suiteName , testContainers , getUidsByName ( testContainers , testTagName ) );
202+ final TestResult test1 = findTestResultByName ( "test1" );
203+ final TestResult test2 = findTestResultByName ( "test2" );
206204
207- assertBeforeFixtures (testTagName , testContainers , beforeClass );
208- assertAfterFixtures (testTagName , testContainers , afterClass );
205+ assertThat (results .getTestContainers ())
206+ .flatExtracting (TestResultContainer ::getChildren )
207+ .contains (test1 .getUuid (), test2 .getUuid ());
209208 }
210209
211210 @ Test (description = "Method fixtures" )
@@ -224,8 +223,6 @@ public void perMethodFixtures() {
224223
225224 assertThat (testResults ).as ("Unexpected quantity of testng case results has been written" ).hasSize (2 );
226225 List <String > uuids = testResults .stream ().map (TestResult ::getUuid ).collect (Collectors .toList ());
227- assertThat (testContainers ).as ("Unexpected quantity of testng containers has been written" )
228- .hasSize (10 );
229226
230227 assertContainersChildren (testTagName , testContainers , uuids );
231228 assertContainersChildren (suiteName , testContainers , getUidsByName (testContainers , testTagName ));
@@ -251,8 +248,6 @@ public void perTestTagFixtures() {
251248
252249 assertThat (testResult ).as ("Unexpected quantity of testng case results has been written" ).hasSize (1 );
253250 List <String > testUuid = singletonList (testResult .get (0 ).getUuid ());
254- assertThat (testContainers ).as ("Unexpected quantity of testng containers has been written" )
255- .hasSize (2 );
256251
257252 assertContainersChildren (testTagName , testContainers , testUuid );
258253 assertContainersChildren (suiteName , testContainers , getUidsByName (testContainers , testTagName ));
@@ -272,9 +267,9 @@ public void skippedSuiteTest() {
272267 assertThat (testResults ).as ("Unexpected quantity of testng case results has been written" )
273268 .hasSize (2 )
274269 .flatExtracting (TestResult ::getStatus ).contains (Status .SKIPPED , Status .SKIPPED );
275- assertThat (testContainers ).as ("Unexpected quantity of testng containers has been written" ).hasSize (2 );
270+ assertThat (testContainers ).as ("Unexpected quantity of testng containers has been written" ).hasSize (4 );
276271
277- assertThat (testContainers . get ( 1 ).getBefores ())
272+ assertThat (findTestContainerByName ( "Test suite 8" ).getBefores ())
278273 .as ("Before suite container should have a before method with one step" )
279274 .hasSize (1 )
280275 .flatExtracting (FixtureResult ::getSteps )
@@ -300,7 +295,7 @@ public void multipleSuites() {
300295 .hasSize (3 );
301296 List <String > uids = testResults .stream ().map (TestResult ::getUuid ).collect (Collectors .toList ());
302297 assertThat (testContainers ).as ("Unexpected quantity of testng containers has been written" )
303- .hasSize (6 ).extracting (TestResultContainer ::getName )
298+ .hasSize (8 ).extracting (TestResultContainer ::getName )
304299 .contains (beforeMethodName , beforeMethodName , firstTagName , firstSuiteName , secondTagName ,
305300 secondSuiteName );
306301
@@ -343,7 +338,7 @@ public void parallelMethods() {
343338 assertThat (testResults ).as ("Unexpected quantity of testng case results has been written" )
344339 .hasSize (2001 );
345340 assertThat (testContainers ).as ("Unexpected quantity of testng containers has been written" )
346- .hasSize (6005 );
341+ .hasSize (6006 );
347342
348343 assertContainersPerMethod (before1 , testContainers , uids );
349344 assertContainersPerMethod (before2 , testContainers , uids );
@@ -366,8 +361,6 @@ public void nestedSteps() {
366361 List <TestResultContainer > containers = results .getTestContainers ();
367362 assertThat (testResults ).as ("Unexpected quantity of testng case results has been written" )
368363 .hasSize (1 );
369- assertThat (containers ).as ("Unexpected quantity of testng containers has been written" )
370- .hasSize (3 );
371364
372365 assertThat (containers )
373366 .filteredOn ("name" , beforeMethod )
@@ -574,7 +567,6 @@ public void shouldSetCorrectStatusesForFixtures() throws Exception {
574567
575568 assertThat (results .getTestContainers ())
576569 .flatExtracting (TestResultContainer ::getAfters )
577- .hasSize (9 )
578570 .extracting (FixtureResult ::getName , FixtureResult ::getStatus )
579571 .containsExactlyInAnyOrder (
580572 Tuple .tuple ("afterSuite1" , Status .PASSED ),
@@ -643,6 +635,70 @@ public void shouldProcessVarargsParameters() throws Exception {
643635 );
644636 }
645637
638+ @ Issue ("99" )
639+ @ Test
640+ public void shouldAttachClassFixturesCorrectly () throws Exception {
641+ runTestNgSuites ("suites/gh-99.xml" );
642+
643+ assertThat (results .getTestResults ())
644+ .flatExtracting (TestResult ::getName )
645+ .containsExactlyInAnyOrder (
646+ "classFixtures1" , "classFixtures2" ,
647+ "classFixtures3" , "classFixturesInParent"
648+ );
649+
650+ assertThat (results .getTestContainers ())
651+ .extracting (TestResultContainer ::getName )
652+ .contains (
653+ "io.qameta.allure.testng.samples.ClassFixtures1" ,
654+ "io.qameta.allure.testng.samples.ClassFixtures2" ,
655+ "io.qameta.allure.testng.samples.ClassFixtures3" ,
656+ "io.qameta.allure.testng.samples.ClassFixturesInParent"
657+ );
658+
659+
660+ final TestResult classFixtures1 = findTestResultByName ("classFixtures1" );
661+ final TestResultContainer c1 = findTestContainerByName ("io.qameta.allure.testng.samples.ClassFixtures1" );
662+
663+ assertThat (c1 .getChildren ())
664+ .containsExactlyInAnyOrder (classFixtures1 .getUuid ());
665+
666+ final TestResult classFixtures2 = findTestResultByName ("classFixtures2" );
667+ final TestResultContainer c2 = findTestContainerByName ("io.qameta.allure.testng.samples.ClassFixtures2" );
668+
669+ assertThat (c2 .getChildren ())
670+ .containsExactlyInAnyOrder (classFixtures2 .getUuid ());
671+
672+ final TestResult classFixtures3 = findTestResultByName ("classFixtures3" );
673+
674+ final TestResultContainer c3 = findTestContainerByName ("io.qameta.allure.testng.samples.ClassFixtures3" );
675+
676+ assertThat (c3 .getChildren ())
677+ .containsExactlyInAnyOrder (classFixtures3 .getUuid ());
678+
679+ final TestResult classFixturesInParent = findTestResultByName ("classFixturesInParent" );
680+ final TestResultContainer c4 = findTestContainerByName ("io.qameta.allure.testng.samples.ClassFixturesInParent" );
681+
682+ assertThat (c4 .getChildren ())
683+ .containsExactlyInAnyOrder (classFixturesInParent .getUuid ());
684+
685+
686+ }
687+
688+ private TestResult findTestResultByName (final String name ) {
689+ return results .getTestResults ().stream ()
690+ .filter (testResult -> name .equalsIgnoreCase (testResult .getName ()))
691+ .findFirst ()
692+ .orElseThrow (() -> new IllegalStateException ("can not find result by name " + name ));
693+ }
694+
695+ private TestResultContainer findTestContainerByName (final String name ) {
696+ return results .getTestContainers ().stream ()
697+ .filter (testResultContainer -> name .equalsIgnoreCase (testResultContainer .getName ()))
698+ .findFirst ()
699+ .orElseThrow (() -> new IllegalStateException ("can not find container by name " + name ));
700+ }
701+
646702 private Predicate <TestResult > hasLinks () {
647703 return testResult -> !testResult .getLinks ().isEmpty ();
648704 }
0 commit comments