Intellij IDEA + TESTNG: Execute um método antes de cada teste em um grupo
-
25-09-2019 - |
Pergunta
Estou aprendendo a usar o teste para o Intellij Idea 9.
Tanto quanto eu entendo, uma maneira de fazer um teste em um grupo chamado name
é anotá -lo @Test(group = "name")
. Para executar um método antes de cada teste, anote -o com @BeforeMethod
.
Na minha configuração de teste, quero que um método seja executado antes de cada teste apenas em um grupo específico. Então há um método beforeA
que vai antes de cada teste no grupo A
, um método beforeB
correndo antes de cada um B
teste e assim por diante.
Código de exemplo:
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");
}
}
Eu espero uma produção como
before A
test A1
before A
test A2
before B
test B1
before B
test B2
Mas eu recebo o seguinte:
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
===============================================
E o Intellij Idea destacou todas as minhas anotações com a mensagem "Grupo A é indefinido" ou "Grupo B é indefinido".
O que estou fazendo errado?
Solução
- A listagem não está em boa ordem, isso é culpa do Intellij. Execute o teste na linha de comando ou com o maven, o pedido estará correto.
@BeforeMethod
e@AfterMethod
parece quebrado com grupos.- Intellij Lembre -se de grupos que você usou antes, se você usar um grupo que ainda não seja lembrado, a mensagem "Grupo X é indefinida" será mostrada. Apenas pres alt + Digitar em um grupo indefinido para se lembrar disso.
Recursos :
Outras dicas
Eu pedi ao Intellij para consertar. Por favor, verifique o problema: http://youtrack.jetbrains.net/issue/idea-67653Precisamos votar nele para que os jetbrains consertem
@BeforeMethod(groups =...)
não deve ser executado antes de todos os métodos de um grupo. Ele será executado antes de cada método de uma classe. A diferença é que pertence a um grupo em particular, nada mais. Veja documentos
Como mencionado por Teh Emprah @beforemethod, não deve ser executado antes de todos os métodos pertencentes ao mesmo grupo que ele.
Para conseguir isso, você deve configurar você testando.xml corretamente. Para sua saída esperada, deve parecer assim
<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>