Esta es la respuesta más válida que encomtrarás aportar, pero obsérvala detenidamente y analiza si se puede adaptar a tu proyecto.
Solución:
Esto es exactamente lo que estaba buscando para mi prueba de automatización y lo hice funcionar.
Argumento de línea de comando
mvn clean test -Denv.USER=UAT -Dgroups=Sniff
Mi Pom Xml
4.0.0
TestNg
TestNg
1.0
org.testng
testng
6.8
test
org.apache.maven.plugins
maven-surefire-plugin
2.12.4
$env.USER
Prueba de prueba NG
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class TestAuthentication
@Test (groups = "Sniff", "Regression" )
public void validAuthenticationTest()
System.out.println(" Sniff + Regression" + System.getProperty("environment"));
@Test (groups = "Regression" ,parameters = "environment")
public void failedAuthenticationTest(String environment)
System.out.println("Regression-"+environment);
@Parameters("environment")
@Test (groups = "Sniff")
public void newUserAuthenticationTest(String environment)
System.out.println("Sniff-"+environment);
Lo anterior funciona bien. Además, si necesita utilizar testng.xml
puede especificar el suiteXmlFile
me gusta …
org.apache.maven.plugins
maven-surefire-plugin
2.12.4
$env.USER
testng.xml
Además, prefiero usar @Parameters
en vez de parameters
en @Test()
ya que el último está en desuso.
No necesita definir nada para los grupos en testng xml o pom, el soporte viene incorporado. Simplemente puede especificar los grupos en la línea cmd http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#groups
Espero eso ayude..
Edición 2:
Ok… así que aquí hay otra opción… Implementar IMethodInterceptor
Defina su propiedad personalizada. Use -Dcustomproperty=groupthatneedstoberrun en su llamada de línea de comandos.
En la llamada de intercepción, analice todos los métodos… algo en el sentido…
System.getProperty("customproperty");
for(IMethodInstance ins : methods)
if(ins.getMethod().getGroups()) contains group)
Add to returnedVal;
return returnedVal;
Agregue esto a la lista de oyentes en su xml.
Perfecto.
La forma más sencilla de pasar la variable de POM.xml a ABC.java
POM.xml
myhostname.com
Y en el ABC.java
podemos llamarlo desde las propiedades del sistema como este
System.getProperty("hostName")
Recuerda comunicar esta crónica si te valió la pena.