Created methods:

@BeforeGroups(groups = {"INdependent"}) @BeforeGroups(groups = {"dependent"}) @Test (groups = {"INdependent"}) @Test (groups = {"dependent"}, dependsOnGroups = {"INdependent"}) @AfterMethod(groups = {"INdependent"}) @AfterMethod(groups = {"dependent"}) @AfterGroups(groups = {"INdependent"}) @AfterGroups(groups = {"dependent"}) 

I expect the following sequence of code execution:

 BeforeGroups = "INdependent" Test = "INdependent" AfterMethod = "INdependent" AfterGroups = "INdependent" BeforeGroups = "dependent" Test = "dependent" AfterMethod = "dependent" AfterGroups = "dependent" 

In fact, it is done like this:

 BeforeGroups = "INdependent" Test = "INdependent" AfterMethod = "dependent" (этого тут быть не должно) AfterMethod = "INdependent" AfterGroups = "INdependent" BeforeGroups = "dependent" Test = "dependent" AfterMethod = "dependent" AfterMethod = "INdependent" (этого тут быть не должно) AfterGroups = "dependent" 

What am I doing wrong?

Code testng.xml:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Default Suite"> <test name="mts-sorm3-extractor-tests"> <groups> <run> <include name="independent"/> <include name="dependent"/> </run> </groups> <classes> <class name="ru.mts.sorm.mts_sorm3_extractor_tests.Sorm3ExtractDictTest"/> </classes> </test> <!-- mts-sorm3-extractor-tests --> </suite> <!-- Custom suite --> 

    1 answer 1

    The after and before methods of both groups will always be executed. Regardless of passable tests. Possible solutions: 1. Abandon the specific methods for each group. 2. Scatter tests in different classes.