Intellij Idey + Testng: Запустите метод перед каждым тестом в группе

StackOverflow https://stackoverflow.com/questions/3602404

  •  25-09-2019
  •  | 
  •  

Вопрос

Я учусь использовать 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 подчеркнула все мои аннотации с сообщением «Группа A intrefined» или «Группа B не определена».

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

Это было полезно?

Решение

  1. Листинг не в хорошем состоянии, это неисправность Intellij. Запустите тест в командной строке или с Maven, заказ будет правильным.
  2. @BeforeMethod а также @AfterMethod кажется сломанным с группами.
  3. Intellij запомнит группы, которые вы использовали ранее, если вы используете группу, которая еще не вспоминается, будет отображаться сообщение «GROUP X undered». Просто Прес alt. + Войти на неопределенной группе, чтобы запомнить это.

Ресурсы :

Другие советы

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

@BeforeMethod(groups =...) не должен бегать до каждого метода в группе. Он будет работать до каждого метода в классе. Разница в том, что это просто принадлежит к определенной группе, ничего более. Смотрите документы

Как упомянуто 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top