Wednesday, November 25, 2015

Call more than two class through XML file

Create an XML file:- Testng.xml
-----------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" verbose="1">
  <test name="First Test">
    <classes>
       <class name="Firsttestngpackage.NewTest"/>
   
    </classes>
  </test>
   <test name="Second Test">
    <classes>
       <class name="Firsttestngpackage.Secondclass"/>
    </classes>
  </test>
</suite>

-------------------------------------------------------------------------
2) Add a testng class in a package;- Newclass
-----------------------------------------------
package Firsttestngpackage;

import org.testng.annotations.Test;

public class NewTest {
  @Test
  public void firstclass() {
 System.out.println("new test running");
  }
}
-----------------------------------------------------------
3) Add a testng class in a package;- Secondclass
----------------------------------------------------------
package Firsttestngpackage;

import org.testng.annotations.Test;

public class Secondclass {
  @Test
  public void second() {
 System.out.println("second class running");
  }
}
-----------------------------------------------------------
now run the XML file and observe the result....:)
Now enjoy................

Friday, November 20, 2015

Order of Annotation execution

I am using Gmail example to show . how Testng framework annotation is working in order.
Notes:-
1) Less test priority will execute first.
2)  @BeforeMethod/Aftermethod will execute repetitively for each test.
3) A class can have more than one test.
4) A suite is made of one or more tests.
5) A test is made of one or more classes.
6) A class is made or one or more methods.

---------------------------------------------------------------------------------------------
package SachinGarg;

import junit.framework.Assert;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.*;

public class Gmail_TestNG_Annotation {
  public WebDriver driver=new FirefoxDriver();
public String ex_Title= null;
public String ac_Title=null;
public boolean flag=true;

@BeforeTest
public void before_Test()
{
driver.get("http://www.gmail.com");
}

@BeforeMethod
public void befor_Method(){
System.out.println("Before method has be executed");
ex_Title="Gmail";
ac_Title=driver.getTitle();
//Generate assert if result does not match
Assert.assertEquals(ac_Title, ex_Title);
}

@Test ( priority =1)
  public void Method_needhelp() {
System.out.println("Test method 1");
driver.findElement(By.linkText("Need help?")).click();
ex_Title="Google Account Recovery";
ac_Title=driver.getTitle();
//Generate assert if result does not match
Assert.assertEquals(ac_Title, ex_Title);
  }
@Test ( priority =0)
 public void Create_Account() {
System.out.println("Tets method 0");
driver.findElement(By.linkText("Create account")).click();
ex_Title="Create your Google Account";
ac_Title=driver.getTitle();
Assert.assertEquals(ac_Title, ex_Title);
 }
@AfterMethod
public void After_Method(){
System.out.println("After Method executed");
if(flag)
{
driver.findElement(By.id("link-signin")).click();
flag=false;
}
}
@AfterTest
public void close_driver(){
System.out.println("driver quit");
driver.quit();
}
}
Output is :-
[TestNG] Running:
  C:\Users\sachinABCG\AppData\Local\Temp\testng-eclipse--1483946418\testng-customsuite.xml

Before method has be executed
Tests method 0
After Method executed
Before method has be executed
Test method 1
After Method executed
driver quit
PASSED: Create_Account
PASSED: Method_needhelp

After execution , open the auto generated report. Please see the screen shot.