2009-03-31 23 views
11

¿Alguien sabe si hay una manera de utilizar un TestNG DataProvider con una prueba al mismo tiempo que utilizando la anotación @Parameter? Nuestras suites de prueba tienen cierta información de configuración constante que se pasa a los métodos de prueba a través de la anotación @Parameter. Ahora nos gustaría usar un DataProvider para ejecutar estas pruebas en un conjunto de valores de datos.Posible usar TestNG DataProvider AND test suite Parámetros?

Entiendo el problema interno de determinar el orden en el que se encontrarán los parámetros resultantes, pero necesitamos esta característica si es posible.

¿Alguna idea?

En un mundo ideal, podría hacer algo como esto:

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

Respuesta

8

Hey, puede ser un poco torpe pero ¿por qué no utilizar un método @BeforeClass para almacenar el suiteParam de forma local en un campo de la clase de prueba como tal.

private String suiteParam; 

@BeforeClass 
@Parameter("suiteParam") 
public void init(String suiteParam) { 
    this.suiteParam = suiteParam; 
} 

De esta manera puede utilizar sus proveedores de datos de la manera habitual y seguir teniendo acceso a su suite param.

2

Sí, utilizando el uso de TestNG's dependency injection capabilies. Puede acceder a todos los parámetros definidos en su DataProvider. Se trata de un cierto ejemplo de DataProvider en la necesidad del parámetro test_param:

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

De esta manera puede obtener parámetros configurados y en DataProvider que luego se utiliza para la prueba generada. Consulte TestNG JavaDoc para obtener detalles sobre la clase ITestContext.

Cuestiones relacionadas