2012-09-18 94 views
14

A punto de implementar un marco de prueba con Maven + TestNG + Selenium.Suite TestNG.xml para incluir todos los paquetes

¿Cómo declaras un suite.xml que le dice a TestNG que ejecute ALL pruebas? He intentado todo esto fue en vano:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <classes> 
     <class name="*" /> 
    </classes> 
    </test> 
</suite> 

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <groups> 
     <run> 
     <include name="*" /> 
     <exclude name="disabled" /> 
     </run> 
    </groups> 
    </test> 
</suite> 

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <packages> 
     <package name="*" /> 
    </packages> 
    </test> 
</suite> 

necesito especificar diferentes configuraciones de baño con diferentes paramers pero todo correr todas las pruebas. Cada ejemplo que podría extraer explicitamente enumera cada clase o paquete que tiene menos sentido para mí.

+0

Me parece que esto es realmente extraño. Parece no solo posible, sino * fácil * crear una prueba TestNG en un directorio 'test' como sería de esperar, pero no actualizar' testng.xml' y he aquí, la prueba no se está ejecutando realmente como parte de la suite ... – dimo414

Respuesta

7

puede agregar todas las clases de prueba dentro de un paquete al declarar testng.xml archivo como

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="sampleTest" parallel="false"> 

    <test name="sample-Test" preserve-order="true" verbose="2"> 
     <packages> 
      <package name="org.sample.something.*"/> 
     </packages> 
    </test> 

</suite> 

No hay ningún lugar para pasar las pruebas como las opciones de búsqueda. Si desea hacer algo así, debe implementar el paquete en el código e implementar el escenario de búsqueda allí.

+1

La lista de cientos de paquetes y miles de clases es ciertamente algo que no pretendo hacer. ¿Por qué demonios lo haría? Es información redundante. Maven + TestNG puede encontrar todas las pruebas de forma predeterminada. ¿Por qué se pierde esta característica al especificar un conjunto? (Con la única intención de agregar parámetros ...) – sibidiba

+3

Los nombres de sus paquetes pueden ser expresiones regulares, le permitirán ejecutar todo. Sin embargo, es bastante caro, ya que TestNG tiene que recorrer toda la ruta de clase para hacerlo. –

+0

Exactamente lo que estoy buscando. ¿Por qué class = "\ *" no funciona entonces? (Recorrer la ruta de la clase no es costoso, ya que solo se produce una vez al inicio. Enumerar cada clase/paquete a mano * es * caro y propenso a errores.) – sibidiba

1

AFAIK testng no tiene una opción de expresión regular como la que está buscando.

embargo, creo que se puede conseguir lo que quieres de dos maneras:

  1. Si está trabajando en Eclipse con el plugin TestNG. Puede simplemente seleccionar su carpeta de prueba que tiene todos los paquetes definidos. Con maven, sería principalmente su carpeta src/test/java, haga clic derecho y diga run como testng. Lo que esto haría es crear un customsuite.xml temporal que tenga todas sus clases en la lista. Puede guardar el xml como su xml predeterminado.

  2. El plugin surefire con maven tiene la opción de especificar includes y luego un patrón. Puede intentar configurarlo en * / .java, que creo que recogería todas las cajas de prueba (aunque no probadas). Puede invocar sus pruebas como prueba mvn entonces.

+0

¿Cómo es este customsuite.xml diseñado por TestNG cuando hago clic en el paquete? ? – R11G

+0

Debe estar en el código de complementos. ¿O recibí tu pregunta ...? –

+0

Sí. Creo que tu respondiste. Customuite xml está diseñado según el código de los complementos. Específicamente de qué plugin estamos hablando aquí? – R11G

17

Debería usar. * Para que coincida con todos hasta donde yo sé.

+3

esto es todo!

+0

¡Gracias! muy útil –

2

Supongamos que tiene un paquete de tres niveles, sus clases de prueba están bajo el paquete com.abc.xyz.

<package name="*" /> </packages> , doesn't work. 
<package name="com.*.*" /> doesn't work. 
<package name="com.abc.*" /> does work. 
+0

De las pruebas que acabo de hacer, lo siguiente también funcionaría: ' ' –

+0

gracias a Dave, parecía que la expresión regular no es un simple comodín. Al igual que dijo luis,. * Coinciden con todos. por lo tanto, com. * coincidirá con cualquier elemento de com.abc y también con comabc.abc (solo supongo) – nighteblis

Cuestiones relacionadas