2017-04-13 1 views
0

Derzeit verwende ich @DataProvider, die Daten von Excel liest und es nur an einen @Test übergibt. Im Allgemeinen enthalten diese Daten den Ausführungsfluss eines Testfalls, der es mir ermöglicht, verschiedene Testfälle parallel auszuführen, wodurch die Abhängigkeit von der Modifikation der testng.xml eliminiert wird.Gibt es eine Möglichkeit, Parameter an TestNG-Test zu übergeben, ohne @DataProvider & Parameter in XML zu verwenden?

Das Problem mit dem obigen Ansatz ist, ich bin nicht in der Lage, Abhängigkeit extern zu priorisieren oder aufrechtzuerhalten. Gibt es einen Weg, wo ich @Test in TestNG-Klasse aus einer anderen Klasse zusammen mit Parameter starten kann, so dass ich die Abhängigkeit in der Excel-Tabelle erwähnt pflegen kann.

Antwort

1

@Factory annotierte Methoden sind da, um zu helfen.
Sie können Konstruktoren anderer Testklassen innerhalb aufrufen und dann auf Parameter in @Test, @Before* und @After* annotierte Methoden zugreifen.

public class MainProvider { 

    @Factory(dataProvider = "main", dataProviderClass = MainProvider.class) 
    public Object[] prepare(ParameterType first, ParameterType second) { 
     return new Object[]{new SimpleTest(firstParameter, secondParameter)}; 
    } 

    @DataProvider(name = "main") 
    public Iterator<Object[]> dataProvider() { 
     List<Object[]> parameters = new ArrayList<>(); 

     //Fill it with your data (this can be, of course, in a loop): 
     parameters.add(new Object[] {parameter1, anotherParameter1}); 
     parameters.add(new Object[] {parameter2, anotherParameter2}); 

     return parameters.iterator(); 
    } 
} 
Verwandte Themen