2017-05-26 2 views
0

Ich möchte einen dynamischen Parameter von SH-Datei an meine Java senden. Aber ich kann diesen Parameter nicht bekommen.TestNG: senden dynamische param von Shell-Skript zu Java-Datei

Mein Code wie unten: Ich habe versucht, "filePath" Parameter von scripts.sh zu senden wie unter

$./scripts.sh "/opt/test.apk" 

Quelle scripts.sh wie unten:

java -cp libs/*:bin org.testng.TestNG testng.xml -filePath $1 

meine testng.xml-Datei:

<?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
    <suite name="Suite"> 
    <test name="Test"> 
    <classes>   
     <parameter name="filePath" value="${filePath}"></parameter> 
     <class name="example.FullTestAndroidApp"/> 
    </classes> 
    </test> <!-- Test --> 
</suite> <!-- Suite --> 

und in Java-Klasse, habe ich versucht, filePath param zu erhalten:

public class FullTestAndroidApp { 
@BeforeMethod 
@Parameters("filePath") 
public void initContext(@Optional String filePath) throws MalformedURLException { 
     System.out.println("Parameterized value is : " + filePath); 

} 

Ausgang: Parameterized Wert ist: null

So kann ich nicht filePath dynamische params aus SH-Datei.

Bitte helfen Sie mir. Was ich falsch liege?

Antwort

1

Hier ist, wie Sie dies tun

zuerst Ihre Shell-Skript etwas wie unten ändern:

java -Dfilepath=$1 -cp libs/*:bin org.testng.TestNG testng.xml

Ihre testng.xml verändert aussehen würde unter

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite"> 
    <test name="Test"> 
     <classes> 
      <!-- [/opt/test.apk] would be the default value of filePath--> 
      <parameter name="filePath" value="/opt/test.apk"/> 
      <class name="example.FullTestAndroidApp"/> 
     </classes> 
    </test> 
</suite> 

Jetzt ist Ihre Methode ändern wie unter

@BeforeMethod 
@Parameters("filePath") 
public void initContext(@Optional String filePath) throws MalformedURLException { 
    //We query the JVM property "filepath" and if its not defined then we fall back to the 
    //parameter that was sent to us via the suite xml 
    System.out.println("Parameterized value is : " + System.getProperty("filepath", filePath)); 
}