I'm facing the strange problem. Before writing here, I have done some research on this, but unable to solve the issue.
I'm passing parameters but it is taking the default value for the parameter i.e. "no-Value".
Here is my code
package rough; import org.testng.annotations.AfterMethod; import org.testng.annotations.Optional; import org.testng.annotations.Parameters; import org.testng.annotations.Test; import org.testng.annotations.BeforeMethod; import org.testng.Assert; import java.util.regex.Pattern; import java.util.concurrent.TimeUnit; import org.junit.*; import static org.hamcrest.CoreMatchers.*; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.support.ui.Select; public class Browsers { private WebDriver driver; private String baseUrl; private boolean acceptNextAlert = true; private StringBuffer verificationErrors = new StringBuffer(); @BeforeMethod public void tearDown1() throws Exception { System.out.println("Hello starting"); } @Test @Parameters({ "BROWSER" }) public void setUp(@Optional String BROWSER) throws Exception { if(BROWSER.equalsIgnoreCase("FF")) { driver = new FirefoxDriver(); } else if(BROWSER.equalsIgnoreCase("IE")) { System.setProperty("webdriver.ie.driver", "g:/Selenium Jar Files/IEDriverServer.exe"); driver = new InternetExplorerDriver(); } baseUrl = "http://book.theautomatedtester.co.uk/"; driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); System.out.println("Hello starting1111"); driver.get(baseUrl+"/chapter1"); driver.findElement(By.id("radiobutton")).click(); Select(driver.findElement(By.id("selecttype"))).selectByVisibleText("Selenium RC"); } @AfterMethod public void tearDown() throws Exception { String verificationErrorString = verificationErrors.toString(); if (!"".equals(verificationErrorString)) { Assert.fail(verificationErrorString); } } private boolean isElementPresent(By by) { try { driver.findElement(by); return true; } catch (NoSuchElementException e) { return false; } } private boolean isAlertPresent() { try { driver.switchTo().alert(); return true; } catch (NoAlertPresentException e) { return false; } } private String closeAlertAndGetItsText() { try { Alert alert = driver.switchTo().alert(); String alertText = alert.getText(); if (acceptNextAlert) { alert.accept(); } else { alert.dismiss(); } return alertText; } finally { acceptNextAlert = true; } } }
The XML used here is
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="True">
<test name="Test">
<parameter name = "BROWSER" value="FF"/>
<classes>
<class name="rough.Browsers"/>
</classes>
<test name="Test">
<parameter name = "BROWSER" value="IE"/>
<classes>
<class name="rough.Browsers"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
When I'm running the code getting this error:
[TestNG] Running:
C:\Users\Administrator\AppData\Local\Temp\testng-eclipse-2137105747\testng-customsuite.xml
Hello starting
FAILED: setUp("not-found")
java.lang.NullPointerException
at rough.Browsers.setUp(Browsers.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
at org.testng.TestNG.run(TestNG.java:1057)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
Common Questions On Priority In TestNG A tester can provide a priority value to the test case by defining the priority parameter with @Test annotation. Moreover, if there is no priority defined, the default priority is zero (0) for that test case.
Parameters Annotation in TestNG is a method used to pass values to the test methods as arguments using . xml file. Users may be required to pass the values to the test methods during run time. The @Parameters annotation method can be used in any method having @Test, @Before, @After or @Factory annotation.
TestNG Parameters are present in the xml file. They can be applied either inside the tag or tag. If we want to apply the parameters to all the test cases, then the parameters are applied inside the tag. If the parameter is specific to a particular folder, then the parameter is applied within a tag.
From testng documentation, this is how @optional is used.
@Parameters("db")
@Test
public void testNonExistentParameter(@Optional("mysql") String db) { ... }
If no parameter named "db" is found in your testng.xml file, your test method will receive the default value specified inside the @Optional annotation: "mysql".
Try by correcting your code accordingly. I think that should resolve the issue. If it still doesn't then declare the parameters at the suite tag level in testng.xml and test it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With