2009-03-31 6 views
11

Est-ce que quelqu'un sait s'il existe un moyen d'utiliser un TestNG DataProvider avec un test en même temps que l'utilisation de l'annotation @Parameter? Nos suites de tests ont des informations de configuration constantes qui sont transmises aux méthodes de test via l'annotation @Parameter. Nous aimerions maintenant utiliser DataProvider pour exécuter ces tests sur un ensemble de valeurs de données.Possibilité d'utiliser TestNG DataProvider AND suite de tests Paramètres?

Je comprends le problème interne de la détermination de l'ordre dans lequel les paramètres résultants seraient, mais nous avons besoin de cette fonctionnalité si possible.

Des pensées?

Dans un monde idéal, je pourrais faire quelque chose comme ceci:

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

Répondre

8

Hé, il est peut-être un peu maladroit mais pourquoi utilisez-vous pas une méthode de @BeforeClass pour stocker les suiteParam localement sur un champ de la classe de test comme ça. De cette façon, vous pouvez utiliser vos fournisseurs de données de la manière habituelle tout en ayant accès à votre param. Suite.

2

Oui, en utilisant l'option TestNG's dependency injection capabilies. Vous pouvez accéder à tous les paramètres définis dans votre DataProvider. Ceci est un exemple DataProvider dans le besoin du paramètre test_param:

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

De cette façon, vous pouvez gagner configuré et les paramètres générés dans un DataProvider qui est ensuite utilisé pour votre test. Voir le TestNG JavaDoc pour plus de détails sur la classe ITestContext.

Questions connexes