2016-04-14 2 views
0

Zunächst einmal, ich nicht denken, dass dies this issue ist.TestNG BeforeGroups nicht aufgerufen, es sei denn in Elternklasse oder lokale Klasse

Wie dem auch sei, das funktioniert, wenn ich Actual laufen:

public class Foo { 
    @BeforeGroups("Group1") 
    public static void doThisFirst() { 
     System.out.println("first"); 
    } 

    @Test(groups="Group1") 
    public void actualTest() { 
     System.out.println("test"); 
    } 
} 

Ausdrucken "erste" und dann "test". Dies funktioniert auch:

public class Foo { 
    @BeforeGroups("Group1") 
    public static void doThisFirst() { 
     System.out.println("first"); 
    } 

    public class Bar extends Foo { 
     @Test(groups="Group1") 
     public void actualTest() { 
      System.out.println("test"); 
     } 
    } 
} 

Aber diese nicht Arbeit, nur „test“ Druck, wenn ich Actual laufen:

public class Foo { 
    @BeforeGroups("Group1") 
    public static void doThisFirst() { 
     System.out.println("first"); 
    } 

    public class Bar { 
     @Test(groups="Group1") 
     public void actualTest() { 
      System.out.println("test"); 
     } 
    } 
} 

Hat eine BeforeGroups Annotation in der Klasse oder auf einem sein Superklasse um zu laufen? Ich sehe nichts in der doc darüber. Ich habe gegoogelt, der Link oben ist das nächste, was ich gefunden habe. Weiß jemand was ich vermisse?

Ich habe auch die @BeforeGroups(groups="Group1") Variante versucht. Gleiches Verhalten.

In der Regel würde ich die Gruppe aus einer Suite (in der Regel von Maven-Surefire-Plugin, manchmal von Eclipse mit dem TestNG-Plugin) laufen, aber wenn ich nach bestimmten Problemen jage, versuche ich einzelne Tests (fast immer von Eclipse), um schneller zu iterieren.

Ich sollte auch sagen, ich habe einen Workaround. Ich habe eine Klasse, die alle meine BeforeGroups und AfterGroups-Methoden enthält, dann erweitere ich das für jede Klasse, die diese Methoden benötigt. Aber es scheint wie eine Buchhaltung, die TestNG für mich tun kann.

+0

Wie führen Sie Ihre TestNG-Suite aus? – juherr

+0

Nein, ich denke nicht ... wie geht's dir? – Shamik

Antwort

0

Ihr Problem ist über contex des Tests. Wenn Sie Ihren Test z. IDEE, es wird folgenden XML generieren:

Wie Sie sehen, keine Informationen über Ihre @Before-Methode. Damit es funktioniert müssen Sie folgende xml haben:

<suite name="Default Suite"> 
    <test name="testngex"> 
     <packages> 
      <package name="path.to.foo.class"/> 
     </packages> 
    </test> 
</suite> 

Und Sie werden Ergebnis erhalten erwartet. Wie auch immer, BaseTestClass mit @Before und @After zu erweitern, ist eine bessere Lösung.

0

Mit dem gleichen Problem konfrontiert. Fügen Sie @Test(groups="Group1") zu Ihrer Foo Klasse hinzu