2016-05-31 9 views
0

Mein @BeforeMethod generiert eine Ausgabe.Verwendung der BeforeMethod-Ausgabe in Testmethode

@BeforeMethod 
public void Random() throws Exception { 
    //Generating Random Text 
    int leftLimit = 97; 
    int rightLimit = 122; 
    int targetStringLength = 3; 
    StringBuilder buffer = new StringBuilder(targetStringLength); 
    for (int i = 0; i < targetStringLength; i++) { 
     int randomLimitedInt = leftLimit + (int) 
      (new Random().nextFloat() * (rightLimit - leftLimit)); 
     buffer.append((char) randomLimitedInt); 
    } 
    String generatedString = buffer.toString(); 

    System.out.println(generatedString); 


} 

Wie kann ich die Ausgabe des @BeforeMethod in folgenden Verfahren

@Test(priority = 1) 
    public void Registration() throws Exception { 

     driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIATableCell[2]/UIATextField[1]")).sendKeys("abc" + generatedString); 
} 

Antwort

1

Die Lösung für Ihre Frage wäre die erzeugte Zeichenfolge in einer Klassenstufe Variablen zu speichern (Feld). Beispiel: private String generatedString auf Klassenebene und Einstellung generatedString in Ihrer Vorher-Methode.

Da jedoch alles, was Sie in Ihrer Vorher-Methode tun, eine zufällige Zeichenfolge generiert, wäre es sinnvoller, wenn Ihre zufällige Erzeugungsmethode eine normale Methode wäre, die von jedem beliebigen Ort in der Klasse aufgerufen werden kann.

@Test(priority = 1) 
public void registration() throws Exception { 
    String randomString = generateRandomString(); 
    driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIATableCell[2]/UIATextField[1]")).sendKeys("abc" + randomString); 
} 

public String generateRandomString() throws Exception { 
    //Generating Random Text 
    int leftLimit = 97; 
    int rightLimit = 122; 
    int targetStringLength = 3; 
    StringBuilder buffer = new StringBuilder(targetStringLength); 
    for (int i = 0; i < targetStringLength; i++) { 
     int randomLimitedInt = leftLimit + (int) (new Random().nextFloat() * (rightLimit - leftLimit)); 
     buffer.append((char) randomLimitedInt); 
    } 
    String generatedString = buffer.toString(); 

    System.out.println(generatedString); 

    return generatedString; 
} 

Ich sollte auch erwähnen, dass es viele gute Bibliotheken gibt, die Lösungen zum Generieren von zufälligen Strings haben. Apache RandomStringUtils Klasse ist ein Beispiel.

EDIT: Als Antwort auf die Frage unten nur eine zufällige Zeichenfolge zu erzeugen:

private final static String RANDOM_STRING = generateRandomString(); 

@Test(priority = 1) 
public void registration() throws Exception { 
    driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIATableCell[2]/UIATextField[1]")).sendKeys("abc" + RANDOM_STRING); 
} 

public String generateRandomString() throws Exception { 
    //Generating Random Text 
    int leftLimit = 97; 
    int rightLimit = 122; 
    int targetStringLength = 3; 
    StringBuilder buffer = new StringBuilder(targetStringLength); 
    for (int i = 0; i < targetStringLength; i++) { 
     int randomLimitedInt = leftLimit + (int) (new Random().nextFloat() * (rightLimit - leftLimit)); 
     buffer.append((char) randomLimitedInt); 
    } 
    String generatedString = buffer.toString(); 

    System.out.println(generatedString); 

    return generatedString; 
} 
+0

wenn ich eine neue Testmethode hinzufügen, wird es einen neuen zufälligen Text zu erzeugen ... Wie kann ich das gleiche verwenden Text, der zuerst generiert wird. –

+0

@ArunKumar Ich habe meine Antwort aktualisiert, um dieselbe erzeugte Zeichenfolge wiederzuverwenden – user2272115

+0

@ArunKumar hat diese Antwort für Sie funktioniert? Bitte akzeptieren Sie wenn ... – user2272115