Suche…


Bemerkungen

In diesem Abschnitt erhalten Sie einen Überblick darüber, was testng ist und warum ein Entwickler es möglicherweise verwenden möchte.

Es sollte auch alle großen Themen in testng erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für testng neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.

Versionen

Ausführung Datum
1,0 2017-06-07

Installation oder Setup

TestNG erfordert die Verwendung von JDK 7 oder höher.

Gemäß http://testng.org/doc/download.html müssen Sie zur Installation von testng die Abhängigkeit von testng zu Ihrer maven pom.xml- oder gradle-Datei build.gradle hinzufügen

Maven:

<repositories>
  <repository>
    <id>jcenter</id>
    <name>bintray</name>
    <url>http://jcenter.bintray.com</url>
  </repository>
</repositories>
 
<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.9.12</version>
  <scope>test</scope>
</dependency>

Gradle:

repositories {
    jcenter()
}
 
dependencies {
    testCompile 'org.testng:testng:6.9.12'
}

Weitere Optionen finden Sie auf der offiziellen Seite .

Schnellprogramm mit TestNG

package example;
 
import org.testng.annotations.*; // using TestNG annotations
 
public class Test {
 
 @BeforeClass
 public void setUp() {
   // code that will be invoked when this test is instantiated
 }
 
 @Test(groups = { "fast" })
 public void aFastTest() {
   System.out.println("Fast test");
 }
 
 @Test(groups = { "slow" })
 public void aSlowTest() {
    System.out.println("Slow test");
 }
 
}

Die Methode setUp() wird aufgerufen, nachdem die setUp() wurde und bevor eine Testmethode ausgeführt wird. In diesem Beispiel werden wir die Gruppe schnell aFastTest() , sodass aFastTest() aufgerufen wird, während aSlowTest() übersprungen wird.

TestNG Hello World Beispiel

Das Schreiben und Ausführen eines einfachen TestNG Programms besteht hauptsächlich aus drei Schritten.

  1. Code - Schreiben Sie die Geschäftslogik Ihres Tests und kommentieren Sie sie mit TestNG-Anmerkungen
  2. Konfigurieren - fügen Sie Informationen zu Ihrem Test in testng.xml oder in build.xml
  3. TestNG ausführen - kann von der Befehlszeile, ANT, IDE wie Eclipse, IntelliJs IDEA aufgerufen werden.

Kurze Erläuterung des Beispiels (was getestet werden muss) :

Wir haben eine RandomNumberGenerator Klasse, die über die Methode generateFourDigitPin , die eine vierstellige PIN generiert und als int zurückgibt. Wir wollen hier also testen, ob diese Zufallszahl aus 4 Ziffern besteht oder nicht. Unten ist der Code:

Zu testende Klasse :

package example.helloworld;

public class RandomNumberGenerator {

public int generateFourDigitPin(){
    return (int)(Math.random() * 10000);
}
}

Die TestNG-Testklasse :

package example.helloworld;

import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TestRandomNumberGenerator {
    
    RandomNumberGenerator rng = null;
    
    @BeforeClass
    public void deSetup(){
        rng = new RandomNumberGenerator();
    }
    
    @Test
    public void testGenerateFourDigitPin(){
        int randomNumber = rng.generateFourDigitPin();
        Assert.assertEquals(4, String.valueOf(randomNumber).length());
    }
    
    @AfterClass
    public void doCleanup(){
        //cleanup stuff goes here
    }
}

Ther testng.xml :

<suite name="Hello World">
    <test name="Random Number Generator Test">
        <classes>
            <class name="example.helloworld.TestRandomNumberGenerator" />
        </classes>
    </test>
</suite>

Führen Sie die TestNG-Suite mit Gradle aus

Beispieldatei build.gradle :

plugin: 'java'

repositories {
    mavenLocal()
    mavenCentral()
    jcenter()
}

dependencies {
    compile "org.testng:testng:6.9.12"
}

test {
    useTestNG() {
    suiteXmlBuilder().suite(name: 'Sample Suite') {
        test(name : 'Sample Test') {
            classes('') {
                'class'(name: 'your.sample.TestClass')
            }
        }
    }
}

So konfigurieren Sie TestNG in Eclipse & Run test mit xml

So installieren Sie TestNG in Eclipse

  1. Eclipse öffnen
  2. Klicken Sie auf Hilfe> Neue Software installieren Listenpunkt
  1. Klicken Sie auf Hinzufügen
  2. Geben Sie Name und URL an - http://beust.com/eclipse Geben Sie hier die Bildbeschreibung ein
  1. Wählen Sie TestNG aus
  2. Weiter klicken

Listenpunkt

  1. Klicken Sie auf Fertig stellen
  2. Die Installation von TestNG wird einige Zeit dauern

Einmal installiert, starten Sie Eclipse neu.

Lassen Sie uns ein TestNG-Projekt erstellen

  1. Datei> Neu> Java-Projekt> Geben Sie einen Namen ein und klicken Sie auf Fertig stellen

  2. Erstellen Sie eine Klasse als TestNGClass

  3. Erstellen Sie folgende Klasse

    1.LoginPage.class

    2.HomePage.class

    3.FBLoginTest.class

Hier ist der Code:

LoginPage-Klasse

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class LoginPage {

    @FindBy(id = "email")
    private WebElement username;
    
    @FindBy(id = "pass")
    private WebElement password;
    
    @FindBy(xpath = ".//input[@data-testid='royal_login_button']")
    private WebElement login;
    
    WebDriver driver;
    
    public LoginPage(WebDriver driver){
        this.driver = driver;
         PageFactory.initElements(driver, this);
    }
    public void enterUserName(String name){
        username.clear();
        username.sendKeys(name);
    }
    
    public void enterPassword(String passwrd){
        password.clear();
        password.sendKeys(passwrd);
    }
    

    public HomePage clickLoginButton(){
        login.click();
        return new HomePage(driver);
    }
}

HomePage-Klasse .

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class HomePage {

    @FindBy(id = "userNavigationLabel")
    private WebElement userDropdown;
    
    WebDriver driver;
    
    public HomePage(WebDriver driver){
        this.driver = driver;
        PageFactory.initElements(driver, this);
    } 
    
    public boolean isUserLoggedIn(){
        return userDropdown.isDisplayed();
    }
    
}

FBLoginTest-Klasse

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;

import com.testng.pages.HomePage;
import com.testng.pages.LoginPage;

public class FBLoginTest {
    
    WebDriver driver;
    LoginPage loginPage;
    HomePage homePage;
    
    @BeforeClass
    public void openFBPage(){
        driver = new FirefoxDriver();
        driver.get("https://www.facebook.com/");
        loginPage = new LoginPage(driver);
    }
    
    @Test
    public void loginToFB(){
        loginPage.enterUserName("");
        loginPage.enterPassword("");
        homePage = loginPage.clickLoginButton();
        Assert.assertTrue(homePage.isUserLoggedIn());
    }
    
    @AfterClass
    public void closeBrowser(){
        driver.quit();
    }

}

Hier kommt die testng-XML: Klicken Sie mit der rechten Maustaste auf Projekt, erstellen Sie eine XML-Datei und kopieren Sie diesen Inhalt.

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite">
  <test name="Test">
    <classes>
      <class name="com.testng.FBLoginTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

So fügen Sie Selen-Standalone-Glas hinzu:
Laden Sie den neuesten Standalone-Selenbehälter herunter und fügen Sie ihn im Build-Pfad des Projekts hinzu.

  1. Klicken Sie mit der rechten Maustaste auf Projekt> Erstellungspfad> Erstellungspfad konfigurieren> Bibliotheken auswählen> Externe Jars hinzufügen

Wie führe ich die TestNG-XML aus? Klicken Sie mit der rechten Maustaste auf xml> Ausführen als> TestNGSuite

Viel Spaß beim Codieren :)



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow