2016-06-29 8 views
0

Ist es möglich, den Wert der Parameter zu ermitteln, die zum Initialisieren einer annotierten Testklasse @Factory von einer der ITestListener-, ISuiteListener- oder anderen Listenermethoden verwendet werden?Abrufen des Werts der in @Factory annotierten Klasse übergebenen Parameter mithilfe von TestNG

Unten ist eine Beispieltestklasse. Meine Absicht ist es, den Wert des Klassen-Init-Parameters 'value' mit einer der Listener-Methoden zu erhalten.

import java.util.ArrayList; 
    import java.util.Iterator; 
    import java.util.List; 

    import org.testng.Assert; 
    import org.testng.annotations.DataProvider; 
    import org.testng.annotations.Factory; 
    import org.testng.annotations.Listeners; 
    import org.testng.annotations.Test; 
    import org.testng.reporters.EmailableReporter2; 

    @Listeners({ TestExecutionListener.class, EmailableReporter2.class }) 
    public class TestClass { 

     private int value; 

     @Factory(dataProvider = "data", dataProviderClass = TestClass.class) 
     public TestClass(final int value) { 
      this.value = value; 
     } 

     @Test(alwaysRun = true) 
     public void testOdd() { 
      Assert.assertTrue(value % 2 != 0); 
     } 

     @Test(alwaysRun = true) 
     public void testEven() { 
      Assert.assertTrue(value % 2 == 0); 
     } 

     @DataProvider(name = "data") 
     public static Iterator<Object[]> data() { 

      List<Object[]> list = new ArrayList<>(); 
      for (int i = 0; i < 2; i++) { 
       list.add(new Object[] { i }); 
      } 
      return list.iterator(); 
     } 
    } 

Vielen Dank im Voraus.

Antwort

1

Sie können von ITestResult#getInstance() auf Ihr Objekt zugreifen. Sie müssen nur in den entsprechenden Typ (TestClass) zu werfen und einen Getter für value hinzufügen (oder seine Sichtbarkeit ändern).

ITestResult ist in vielen Zuhörern verfügbar.

Verwandte Themen