testng Tutorial
Iniziare con testng
Ricerca…
Osservazioni
Questa sezione fornisce una panoramica di cosa è il testng e perché uno sviluppatore potrebbe volerlo usare.
Dovrebbe anche menzionare eventuali soggetti di grandi dimensioni all'interno di testng e collegarsi agli argomenti correlati. Poiché la Documentazione per testng è nuova, potrebbe essere necessario creare versioni iniziali di tali argomenti correlati.
Versioni
Versione | Data |
---|---|
1.0 | 2017/06/07 |
Installazione o configurazione
TestNG richiede JDK 7 o superiore per l'uso.
Secondo http://testng.org/doc/download.html per installare testng è necessario aggiungere la dipendenza testng al file maven pom.xml o gradle build.gradle
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'
}
Altre opzioni possono essere trovate nella pagina ufficiale .
Programma rapido con 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");
}
}
Il metodo setUp()
verrà richiamato dopo che la classe di test è stata setUp()
e prima che venga eseguito qualsiasi metodo di prova. In questo esempio, ci sarà la gestione dei gruppi veloce, così aFastTest()
verrà richiamato mentre aSlowTest()
sarà saltato.
TestNG Hello World Example
Scrivere ed eseguire un semplice programma TestNG
è principalmente un processo in 3 fasi.
- Codice: scrivere la business logic del test e annotarlo con le annotazioni TestNG
- Configura: aggiungi le informazioni del test in
testng.xml
o inbuild.xml
- Esegui TestNG - può essere richiamato dalla riga di comando, ANT, IDE come Eclipse, IntelliJ's IDEA)
Breve spiegazione dell'esempio (cosa è necessario testare) :
Abbiamo una classe RandomNumberGenerator
che ha un metodo generateFourDigitPin
che genera un PIN di 4 cifre e restituisce come int
. Quindi qui vogliamo testare se quel numero casuale è se di 4 cifre o meno. Di seguito è riportato il codice:
Classe da testare :
package example.helloworld;
public class RandomNumberGenerator {
public int generateFourDigitPin(){
return (int)(Math.random() * 10000);
}
}
La classe di test di 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
}
}
Ther testng.xml :
<suite name="Hello World">
<test name="Random Number Generator Test">
<classes>
<class name="example.helloworld.TestRandomNumberGenerator" />
</classes>
</test>
</suite>
Esegui la suite TestNG con Gradle
Esempio di file 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')
}
}
}
}
Come configurare TestNG in Eclipse ed eseguire test usando xml
Come installare TestNG in eclissi
- Fai clic su Aggiungi
- Fornisci nome e URL - http://beust.com/eclipse
- Seleziona TestNG
- Fare clic su Avanti
- Fai clic su Fine
- Ci vorrà del tempo per installare TestNG
Una volta installato, riavviare eclipse.
Consente di creare un progetto TestNG
File> Nuovo> Progetto Java> Fornire un nome e fare clic su Fine
Crea una classe come TestNGClass
Crea la seguente lezione
1.LoginPage.class
2.HomePage.class
3.FBLoginTest.class
Ecco il codice:
Classe LoginPage
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);
}
}
Classe HomePage .
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();
}
}
Classe FBLoginTest
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();
}
}
Ecco il test xml: tasto destro del mouse su Progetto creare un file xml e copiare incollare questo contenuto.
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite">
<test name="Test">
<classes>
<class name="com.testng.FBLoginTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Come aggiungere il vaso autonomo di selenio:
Scarica l'ultimo jar autonomo di selenio e aggiungilo nel percorso di creazione del progetto.
- Fare clic con il tasto destro su Progetto> Crea percorso> Configura percorso build> Seleziona librerie> Aggiungi giare esterne
Come eseguire TestNG xml? Fare clic con il tasto destro su xml> Esegui come> TestNGSuite
Happy Coding :)