执行Testng文件时出现方法错误

时间:2015-08-04 05:41:24

标签: java class methods parameters testng

我是java的初学者。请在下面的代码中帮助我,

@Test(priority=1)
  public void signup(String emailvalue) {
  System.out.println("Page Title: " +driver.getTitle()); 

  driver.findElement(By.id("proprietorName")).sendKeys("Im Owner");

  driver.findElement(By.id("businessName")).sendKeys("Pharmacy By Selenium");

  driver.findElement(By.id("proprietorMobileNo")).sendKeys("1236547890");

  driver.findElement(By.id("website")).sendKeys("http://www.google.com");

  driver.findElement(By.id("businessUserEmail")).sendKeys("emailvalue");

  driver.findElement(By.id("businessUserPassword")).sendKeys("123456");

  driver.findElement(By.id("confirmpass")).sendKeys("123456");

  driver.findElement(By.xpath("//div[@class='col-md-12 mgbt-xs-10 mgtp-20']//div[@class='vd_checkbox']//label[@for='checkbox-2']")).click();

  driver.findElement(By.id("submit-register")).click();

  try
  {
      if(driver.findElement(By.xpath("//div[@class='alert alert-danger vd_hidden']")).isDisplayed())
      {
          driver.findElement(By.id("businessUserEmail")).clear();

          driver.findElement(By.id("businessUserEmail")).sendKeys("emailvalue");

          driver.findElement(By.id("submit-register")).click();
      }

  }
  catch(NoSuchElementException e)
  {
      System.out.println("Given inputs are accepted.");
  }


      switch(emailvalue)
      {   

    case "0": 
          emailvalue = "daniel@xxxx.in";
          break;

    case "1":
          emailvalue = "daniel1@xxxx.in";
          break;

    case "2":
          emailvalue = "daniel2@xxxx.in";
          break;

    case "3":
          emailvalue = "daniel3@xxxx.in";
          break;

    case "4":
          emailvalue = "daniel4@xxxx.in";
          break;      

    case "5":
          emailvalue = "daniel5@xxxx.in";
          break;          

      }

}
  } 

当我执行上面的代码时,我收到以下错误,

Method signup requires 1 parameters but 0 were supplied in the @Test annotation.
    at org.testng.internal.Parameters.checkParameterTypes(Parameters.java:198)
    at org.testng.internal.Parameters.createParameters(Parameters.java:134)
    at org.testng.internal.Parameters.createParameters(Parameters.java:373)
    at org.testng.internal.Parameters.handleParameters(Parameters.java:450)
    at org.testng.internal.Invoker.handleParameters(Invoker.java:1383)
    at org.testng.internal.Invoker.createParameters(Invoker.java:1075)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1180)
    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)

1 个答案:

答案 0 :(得分:0)

您需要将参数传递给测试方法。这可以通过多种方式完成。就像使用dataprovider类或使用testng.xml运行并作为参数传递一样。您可以像这样创建一个testng.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<suite allow-return-values="false" configfailurepolicy="skip" data-provider-thread-count="10" group-by-instances="false" junit="false" name="FullSuite" preserve-order="true" skipfailedinvocationcounts="false" thread-count="5" verbose="1">

   <test allow-return-values="false" group-by-instances="false" id="apiversion1" junit="false" name="TestExecutionWithAPIversion1" preserve-order="true" skipfailedinvocationcounts="false">
      <parameter name="emailvalue" value="0"/>
      <classes>
         <class name="com.test.scripts.yourclassnamewithcorrectpackage/>

      </classes>
   </test>
</suite>

然后修改您的方法以读取您要传递的参数

@Parameters({ "emailvalue" })
@Test(priority=1)
  public void signup(String emailvalue) {
  System.out.println("Page Title: " +driver.
....


}

然后使用testng.xml运行该文件。您可以右键单击转到runas - &gt;运行配置 - &gt;套房 - &gt;选择了项目中的testng.xml。有关详细信息,请参阅this