testng Zelfstudie
Aan de slag met testng
Zoeken…
Opmerkingen
Deze sectie geeft een overzicht van wat testng is en waarom een ontwikkelaar het misschien wil gebruiken.
Het moet ook alle grote onderwerpen binnen testng vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor testng nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.
versies
Versie | Datum |
---|---|
1.0 | 2017/06/07 |
Installatie of instellingen
TestNG vereist JDK 7 of hoger om te gebruiken.
Volgens http://testng.org/doc/download.html om testng te installeren, moet u testng-afhankelijkheid toevoegen aan uw bestand maven pom.xml of 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'
}
Meer opties zijn te vinden op de officiële pagina .
Snel programma met behulp van 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");
}
}
De methode setUp()
wordt aangeroepen nadat de testklasse is gebouwd en voordat een testmethode wordt uitgevoerd. In dit voorbeeld zullen we de groep snel uitvoeren, dus aFastTest()
wordt aangeroepen terwijl aSlowTest()
wordt overgeslagen.
TestNG Hallo wereld voorbeeld
Het schrijven en uitvoeren van een eenvoudig TestNG
programma bestaat hoofdzakelijk uit 3 stappen.
- Code - schrijf bedrijfslogica van uw test en maak aantekeningen met TestNG-aantekeningen
- Configureren - voeg informatie van uw test toe in
testng.xml
of inbuild.xml
- Voer TestNG uit - het kan worden opgeroepen vanaf de opdrachtregel, ANT, IDE zoals Eclipse, IDEA van IntelliJ)
Korte uitleg van het voorbeeld (wat moet worden getest) :
We hebben een RandomNumberGenerator
klasse die een methode heeft generateFourDigitPin
dat een 4-cijferige pincode in en keert terug als genereert int
. Dus hier willen we testen of dat willekeurige getal uit 4 cijfers bestaat of niet. Hieronder staat de code:
Te testen klasse :
package example.helloworld;
public class RandomNumberGenerator {
public int generateFourDigitPin(){
return (int)(Math.random() * 10000);
}
}
De 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>
Voer TestNG suite uit met Gradle
Voorbeeld build.gradle
bestand:
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')
}
}
}
}
Hoe TestNG te configureren in Eclipse & Run-test met xml
Hoe TestNG in Eclipse te installeren
- Klik op Toevoegen
- Geef naam en URL op - http://beust.com/eclipse
- Selecteer TestNG
- Klik volgende
- Klik op Voltooien
- Het duurt enige tijd om TestNG te installeren
Start de eclipse opnieuw op na installatie.
Laten we een TestNG-project maken
Bestand> Nieuw> Java-project> Geef een naam op en klik op Voltooien
Maak een klasse als TestNGClass
Maak de volgende les
1.LoginPage.class
2.HomePage.class
3.FBLoginTest.class
Hier komt de 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 komt de testng xml: klik met de rechtermuisknop op Project maak een xml-bestand en kopieer en plak deze inhoud.
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite">
<test name="Test">
<classes>
<class name="com.testng.FBLoginTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Hoe voeg je een zelfstandige seleniumpot toe:
Download de nieuwste stand-alone pot van selenium & voeg die toe aan het Build-pad van het project.
- Klik met de rechtermuisknop op Project> Pad bouwen> Buildpad configureren> Bibliotheken selecteren> Externe potten toevoegen
Hoe de TestNG xml uit te voeren? Klik met de rechtermuisknop op de xml> Uitvoeren als> TestNGSuite
Happy Coding :)