2009-03-31 10 views
11

Weiß jemand, ob es eine Möglichkeit gibt, einen TestNG DataProvider mit einem Test gleichzeitig mit dem @Parameter Annotation zu verwenden? Unsere Testsuites verfügen über konstante Konfigurationsinformationen, die über die @Parameter-Annotation an die Testmethoden übergeben werden. Wir möchten nun einen DataProvider verwenden, um diese Tests für eine Reihe von Datenwerten auszuführen.TestNG DataProvider AND Testsuite Parameter möglich?

Ich verstehe das interne Problem der Bestimmung der Reihenfolge der resultierenden Parameter wäre, aber wir müssen diese Funktion, wenn möglich.

Irgendwelche Gedanken?

In einer idealen Welt, ich könnte etwas tun:

@Test(dataprovider = "dataLoader") 
@Parameters("suiteParam") 
public void testMethod(String suiteParam, String fromDataParam) { 
... 
} 

Antwort

8

Hey, kann es ein bisschen klobig sein, aber warum Sie keine @BeforeClass Methode zum Speichern der suiteParam lokal auf einem Feld verwenden von der Testklasse so.

Auf diese Weise können Sie Ihre Datenanbieter auf die übliche Weise verwenden und haben weiterhin Zugriff auf Ihre Suite-Parameter.

2

Ja, mit der Verwendung TestNG's dependency injection capabilies. Sie können auf alle definierten Parameter in Ihrem DataProvider zugreifen. Dies ist ein Beispiel einer Data Provider in der Notwendigkeit der test_param Parameter:

@DataProvider(name = "usesParameter") 
public Object[][] provideTestParam(ITestContext context) { 
    String testParam = context.getCurrentXmlTest().getParameter("test_param"); 
    return new Object[][] {{ testParam }}; 
} 

Auf diese Weise können konfiguriert Sammeln und generierten Parameter in einem Datenprovider, die dann für den Test verwendet wird. Details zur ITestContext-Klasse finden Sie unter TestNG JavaDoc.

Verwandte Themen