IntelliJ IDEA + TestNG: запуск метода перед каждым тестом в группе

Я учусь использовать TestNG для IntelliJ IDEA 9.

Насколько я понимаю, один из способов поместить тест в группу с именем name — это аннотировать его @Test(group = "name"). Чтобы запустить метод перед каждым тестом, аннотируйте его @BeforeMethod.

В моей тестовой настройке я хочу, чтобы метод запускался перед каждым тестом только в определенной группе. Таким образом, есть метод beforeA, который запускается перед каждым тестом в группе A, метод beforeB, который запускается перед каждым B тестом, и так далее.

Пример кода:

public class TestExample
{
    @BeforeMethod(groups = "A")
    public void beforeA()
    {
        System.out.println("before A");
    }

    @BeforeMethod(groups = "B")
    public void beforeB()
    {
        System.out.println("before B");
    }

    @Test(groups = "A")
    public void A1()
    {
        System.out.println("test A1");
    }

    @Test(groups = "A")
    public void A2()
    {
        System.out.println("test A2");
    }

    @Test(groups = "B")
    public void B1()
    {
        System.out.println("test B1");
    }

    @Test(groups = "B")
    public void B2()
    {
        System.out.println("test B2");
    }
}

Я ожидаю вывод, как

before A
test A1
before A
test A2
before B
test B1
before B
test B2

но я получаю следующее:

before A
before B
before A
before B
test A2
before A
before B
before A
before B
test B1

===============================================

test B2

===============================================
Custom suite
Total tests run: 4, Failures: 0, Skips: 0
===============================================

И IntelliJ IDEA выделил все мои аннотации сообщением «Группа A не определена» или «Группа B не определена».

Что я делаю неправильно?


person Iain Samuel McLean Elder    schedule 30.08.2010    source источник


Ответы (4)


  1. Список не в порядке, это вина IntelliJ. Запустите тест в командной строке или с помощью maven, порядок будет правильным.
  2. @BeforeMethod и @AfterMethod кажутся разбитыми на группы.
  3. IntelliJ запоминает группы, которые вы использовали ранее, если вы используете группу, которая еще не запомнена, будет показано сообщение «Группа X не определена». Просто нажмите alt + Enter на неопределенной группе, чтобы запомнить ее.

Ресурсы:

person Colin Hebert    schedule 30.08.2010
comment
Знаете ли вы какой-либо обходной путь на данный момент? Просто сейчас я обхожусь без групп, что вносит некоторую избыточность. - person Iain Samuel McLean Elder; 02.09.2010
comment
№ 3 помог мне - приглашение IntelJ IDEA для группы не определено не говорит вам попробовать это. - person davidbak; 08.08.2015
comment
Это было исправлено? Я не могу запустить свой метод перед каждым тестом в группе :( - person Maria Ines Parnisari; 12.10.2017

Я попросил Intellij исправить это. Проверьте проблему: http://youtrack.jetbrains.net/issue/IDEA-67653 Нам нужно проголосовать за это, чтобы JetBrains это исправили

person Ilya    schedule 06.04.2011

@BeforeMethod(groups =...) НЕ должен запускаться ПЕРЕД каждым методом В ГРУППЕ. Он будет выполняться перед каждым методом в классе. Разница в том, что он просто будет принадлежать к определенной группе, не более того. См. ДОКУМЕНТЫ

person TEH EMPRAH    schedule 05.07.2013

Как упоминалось в TEH EMPRAH, @BeforeMethod не должен запускаться перед каждым методом, который принадлежит к той же группе, что и он.

Для этого вам необходимо правильно настроить файл testng.xml. Для вашего ожидаемого результата это должно выглядеть так

<suite....>
 <test name="A">
  <groups>
    <run>
   <include name="A"/>
    </run>
  </groups>
  <classes>
   <class name="...TestExample"/>
  </classes>
 </test>
 <test name="B">
  <groups>
    <run>
   <include name="B"/>
    </run>
  </groups>
  <classes>
   <class name="...TestExample"/>
  </classes>
 </test>
</suite>
person Sahar Rabinoviz    schedule 11.02.2014