Intellij Idey + Testng: Запустите метод перед каждым тестом в группе
-
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 не определена».
Что я делаю неправильно?
Решение
- Листинг не в хорошем состоянии, это неисправность Intellij. Запустите тест в командной строке или с Maven, заказ будет правильным.
@BeforeMethod
а также@AfterMethod
кажется сломанным с группами.- 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>