Определение порядка выполнения методов @BeforeGroups для теста, принадлежащего одной группе в Java

У меня есть тестовый метод, принадлежащий нескольким группам, и я хочу убедиться, что один метод @BeforeGroups (setupHomePage) запускается перед другим (setupUniversalSearchPage). Порядок должен быть определен только в java, так как я должен использовать любой testng xml. Хотя в аналогичном случае в другом тестовом классе порядок выполнения желаемый.

public abstract class HomePageTest extends TestBase
{
   @BeforeGroups("homePageTests")
   public void setupHomePage()
   {
       loadHomePage();
   }
}

public abstract class UniversalSearchPageTest extends HomePageTest
{
   @BeforeGroups("universalPageTests")
   public void setupUniversalSearchPage()
   {
       navigateToSearchPage();
   }
}

public class UniversalSearchPageBasicTest extends UniversalPageTest
{
   @Test(groups = {"homePageTests","universalPageTests")
   public void searchVerificationTest()
   {
       //test code here
   }
}

До сих пор я пробовал следующее: 1. изменение порядка групп в аннотации @Test для searchVerificationTest 2. добавление @Test (groups = "homePageTests") выше объявления класса UniversalSearchPageBasicTest.

Я хотел бы знать, как определяется метод порядка @BeforeGroups, поскольку он отличается в одном классе от другого. Если это имеет какое-либо отношение, я использую maven в eclipse и Appium. Я новичок в testng, дайте мне знать, если мне здесь не хватает чего-то базового.


person Anurag Shukla    schedule 16.06.2017    source источник


Ответы (1)


Методы @BeforeMethod будут выполняться в порядке наследования — сначала самый высокий суперкласс, а затем спускающийся по цепочке наследования. Методы @AfterMethod выполняются в обратном порядке (вверх по цепочке наследования).

Обратите внимание, однако, что порядок нескольких аннотированных методов в одном классе не гарантируется (поэтому лучше этого избегать).

Также доступна онлайн-документация, проверка http://testng.org/doc/documentation-main.html#annotations

person anshul Gupta    schedule 16.06.2017
comment
Важно отметить, что порядок между методами в одном классе с одной и той же аннотацией не гарантируется. - person Julian; 16.06.2017
comment
Но почему-то в моем случае он не следует этому порядку, он пытается запустить метод setupUniversalSearchPage() перед setupHomePage() - person Anurag Shukla; 19.06.2017
comment
@AnuragShukla это происходит для тестового примера UniversalSearchPageBasicTest? - person anshul Gupta; 19.06.2017
comment
@anshulGupta да, если это имеет какое-либо значение, я использую testng 6.11 - person Anurag Shukla; 19.06.2017
comment
@AnuragShukla проблема, из-за которой вы можете видеть это, заключается в том, что UniversalSearchPageTest становится базовым классом для теста UniversalSearchPageBasicTest. Попробуйте использовать супер и сделать вызов. - person anshul Gupta; 19.06.2017
comment
В случае, если @beforeGroups в самом высоком суперклассе не должны запускаться первыми? - person Anurag Shukla; 19.06.2017
comment
В том-то и проблема, что гарантия порядка между методом не поддерживается. Одним из возможных способов взлома может быть попытка указать алфавитный порядок тестового примера. Тестовый пример, который нужно выполнить первым, должен быть на первом месте по алфавиту и так далее. Попробуйте сделать это один раз или используйте Super(). - person anshul Gupta; 19.06.2017
comment
Давайте продолжим обсуждение в чате. - person Anurag Shukla; 19.06.2017