Generally the entry point of any JAVA program is main function. and it is inside a class. in selenium the entry point can be any function having annotation @Test. consider below example. where in driver is initialized, then browser is maximized and a url is opened.
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.junit.Test; public class MyTest { @Test public void LoginTest() { WebDriver driver = new FirefoxDriver(); driver.manage().window().maximize(); driver.get("http://clinic.scriptinglogic.com/auth/login_form.php"); } }
What is junit
JUnit is a unit testing framework for the Java programming language. JUnit has been important in the development of test-driven development. JUnit is perfect unit test framework for java programming language. Open source Java testing framework used to write and run repeatable automated tests.
/* * This class prints the given message on console. */ public class MessageUtil { private String message; //Constructor //@param message to be printed public MessageUtil(String message){ this.message = message; } // prints the message public String printMessage(){ System.out.println(message); return message; } }
Create Test Case Class
import org.junit.Test; import static org.junit.Assert.assertEquals; public class TestJunit { String message = "Hello World"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { assertEquals(message,messageUtil.printMessage()); } }
Annotations in JUnit –
- @Before –
public void method()
The @Before annotation indicates that the attached method will be run before any test in the class. It is mainly used to setup some objects needed by your tests.
- @BeforeClass –
public static void method()
The BeforeClass annotation indicates that the static method to which is attached must be executed once and before all tests in the class. That happens when the test methods share computationally expensive setup (e.g. connect to database).
- @After –
public void method()
Method that is marked with @After gets executed after execution of every test. If we need to reset some variable after execution of every test then this annotation can be used with a method that has the needed code. It is used to cleanup the test environment (e.g., delete temporary data, restore defaults).
- @AfterClass –
public static void method()
In the same way “@AfterClass” annotation can be used to execute a method that needs to be executed after executing all the tests in a JUnit Test Case class. It is used to perform clean-up activities, for example, to disconnect from a database.
import org.junit.*; import static org.junit.Assert.*; import java.util.*; public class JunitTest1 { private Collection collection; @BeforeClass public static void oneTimeSetUp() { // one-time initialization code System.out.println("@BeforeClass - oneTimeSetUp"); } @AfterClass public static void oneTimeTearDown() { // one-time cleanup code System.out.println("@AfterClass - oneTimeTearDown"); } @Before public void setUp() { collection = new ArrayList(); System.out.println("@Before - setUp"); } @After public void tearDown() { collection.clear(); System.out.println("@After - tearDown"); } @Test public void testEmptyCollection() { assertTrue(collection.isEmpty()); System.out.println("@Test - testEmptyCollection"); } @Test public void testOneItemCollection() { collection.add("itemA"); assertEquals(1, collection.size()); System.out.println("@Test - testOneItemCollection"); } }
OUTPUT –
@BeforeClass – oneTimeSetUp
@Before – setUp
@Test – testEmptyCollection
@After – tearDown
@Before – setUp
@Test – testOneItemCollection
@After – tearDown
@AfterClass – oneTimeTearDown
What is Assert?
JUnit provides static methods in the Assert class to test for certain conditions. These assert statements typically start with assert and allow you to specify the error message, the expected and the actual result. An assertion method compares the actual value returned by a test to the expected value, and throws an AssertionException if the comparison test fails.
EXAMPLE –
import com.sun.webkit.Disposer; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import java.util.concurrent.TimeUnit; public class MyJunit { @Test public void loginTest() { System.setProperty("webdriver.ie.driver", "IEDriver/IEDriverServer.exe"); WebDriver driver = new InternetExplorerDriver(); driver.manage().window().maximize(); driver.get("http://localhost/openclinic/auth/login_form.php"); driver.findElement(By.xpath("//input[@id='login_session']")).sendKeys("admin"); driver.findElement(By.xpath("//input[@id='pwd_session']")).sendKeys("admin1"); driver.findElement(By.xpath("//input[@id='login']")).click(); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); boolean result=false; try { result = driver.findElement(By.xpath("//a[@href='../auth/logout.php']")).isDisplayed(); } catch(Throwable t) { result=false; } Assert.assertEquals("Test failed",true,result); } }
OUTPUT –
java.lang.AssertionError: Test failed
Expected :true
Actual :false