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?

Foi útil?

Solução

  1. 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.
  2. @BeforeMethod e @AfterMethod parece quebrado com grupos.
  3. 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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top