Comenzando con las pruebas

Instalación o configuración

TestNG requiere JDK 7 o superior para su uso.

De acuerdo con http://testng.org/doc/download.html para instalar testng, debe agregar la dependencia de testng a su archivo maven pom.xml o gradle build.gradle

Experto:

<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'
}

Se pueden encontrar más opciones en la página oficial.

Programa rápido usando 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");
 }
 
}

El método setUp() se invocará después de que se haya creado la clase de prueba y antes de que se ejecute cualquier método de prueba. En este ejemplo, ejecutaremos el grupo rápidamente, por lo que se invocará aFastTest() mientras que aSlowTest() se omitirá.

TestNG Ejemplo de Hola Mundo

Escribir y ejecutar un programa TestNG simple es principalmente un proceso de 3 pasos.

  1. Código: escriba la lógica empresarial de su prueba y anótela con anotaciones TestNG
  2. Configurar: agregue información de su prueba en testng.xml o en build.xml
  3. Ejecutar TestNG: se puede invocar desde la línea de comandos, ANT, IDE como Eclipse, IDEA de IntelliJ)

Breve explicación del ejemplo (lo que debe probarse):

Tenemos una clase RandomNumberGenerator que tiene un método generateFourDigitPin que genera un PIN de 4 dígitos y lo devuelve como int. Así que aquí queremos probar si ese número aleatorio es de 4 dígitos o no. A continuación se muestra el código:

Clase a evaluar:

package example.helloworld;

public class RandomNumberGenerator {

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

La clase de prueba TestNG:

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
    }
}

La prueba.xml:

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

Ejecute la suite TestNG con Gradle

Ejemplo de archivo 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')
            }
        }
    }
}

Cómo configurar TestNG en Eclipse & Run test usando xml

Cómo instalar TestNG en eclipse

  1. Eclipse abierto

  2. Haga clic en Ayuda > Instalar nuevo software Elemento de la lista

  3. Haga clic en Agregar

  4. Proporcione el nombre y la URL: http://beust.com/eclipse ingrese la descripción de la imagen aquí

  5. Seleccione PruebaNG

  6. Haga clic en Siguiente

Elemento de la lista 7. Haga clic en Finalizar 8. Tomará algún tiempo instalar TestNG

Una vez instalado, reinicie eclipse.

Vamos a crear un proyecto TestNG

  1. Archivo > Nuevo > Proyecto Java > Proporcione un nombre y haga clic en Finalizar

  2. Crea una clase como TestNGClass

  3. Crear la siguiente clase

    1.LoginPage.class

    2.HomePage.class

    3.FBLoginTest.class

Aquí va el código:

*** Clase de página de inicio de sesión ***

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);
    }
}

*** Clase de página de inicio ***.

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 clase

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();
    }

}

Aquí viene el testng xml: haga clic con el botón derecho en Proyecto, cree un archivo xml y copie y pegue este contenido.

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

Cómo agregar un frasco independiente de selenio: Descargue el último jar independiente de selenio y agréguelo en la ruta de compilación del proyecto.

  1. Haga clic con el botón derecho en Proyecto > Ruta de compilación > Configurar ruta de compilación > Seleccionar bibliotecas > Agregar tarros externos

¿Cómo ejecutar TestNG xml? Haga clic con el botón derecho en xml > Ejecutar como > TestNGSuite

Codificación feliz :)