Pregunta

Estoy aprendiendo a utilizar TestNG para IntelliJ IDEA 9.

Por lo que yo entiendo, Una manera de poner una prueba en un grupo llamado name es de anotar que @Test(group = "name"). Para ejecutar un método antes de cada prueba, anotar con @BeforeMethod.

En mi configuración de prueba Quiero un método para ejecutar antes de cada prueba sólo en un grupo en particular. Así que hay una beforeA método que se ejecuta antes de cada prueba en A grupo, un beforeB método de funcionamiento antes de cada prueba B y así sucesivamente.

Ejemplo código:

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");
    }
}

espero salida como

before A
test A1
before A
test A2
before B
test B1
before B
test B2

pero me sale el siguiente:

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
===============================================

Y IntelliJ IDEA ha puesto de relieve todas mis anotaciones con el mensaje "Grupo A es indefinido" o "Grupo B no está definido".

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

  1. La lista no está en buenas condiciones, esto es culpa de IntelliJ. Ejecutar la prueba en línea de comandos o con Maven el orden será correcta.
  2. @BeforeMethod y @AfterMethod parecen romperse con grupos.
  3. IntelliJ recuerde grupos que utilizó antes, si se utiliza un grupo que no se recuerda, sin embargo, el mensaje "Grupo X es indefinido" se mostrará. Sólo pres Alt + Intro en un grupo indefinido de recordarlo.

Recursos:

Otros consejos

Le pregunté IntelliJ para solucionarlo. Por favor de emisión del cheque: http://youtrack.jetbrains.net/issue/IDEA-67653 Tenemos que votar por ella por lo JetBrains lo fija

@BeforeMethod(groups =...) NO se supone que salen antes de cada método en un grupo. Se ejecutará antes de cada método en una clase. La diferencia es, que sólo va a pertenecer a un grupo en particular, nada más. Ver DOCS

Como se ha mencionado por TEH EMPRAH @BeforeMethod no se supone que debe ejecutar antes de cada método de la que pertenece en el mismo grupo que ella.

Con el fin de lograr esto tiene que configurar que testng.xml correctamente. Para su salida esperada que debe ser similar manera

<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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top