IntelliJ IDEA + TestNG: запускать метод перед каждым тестом в группе - PullRequest
1 голос
/ 30 августа 2010

Я учусь использовать 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 не определена».

Что я делаю не так?

Ответы [ 4 ]

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

Ресурсы:

2 голосов
/ 05 июля 2013

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

2 голосов
/ 06 апреля 2011

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

1 голос
/ 11 февраля 2014

Как упомянуто 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...