我如何在TestNG中运行同一类的多个测试用例

问题描述 投票:0回答:1

我正在尝试从同一个类中运行2个测试用例,但是测试用例PatientSearchTest获得通过,第二个测试用例失败,其结果为NullPointerException。这是BaseClass的代码

public class BaseClassTest {

    ReadConfig readconfig = new ReadConfig();

    public String baseURL = readconfig.getApplicationURL();
    public String username =readconfig.getUsername();
    public String password = readconfig.getPassword();
    public static WebDriver driver;
//  public static Logger Logger;


    @Parameters("browser")
    @BeforeClass
        public void setUp(String br)
    {
        /*System.setProperty("webdriver.chrome.driver",System.getProperty("user.dir")+"\\Drivers\\chromedriver.exe");
        System..getProperty can be used only in java classes & ./--> in java classes & in properties*/
        if(br.equals("chrome"))
        {
        System.setProperty("webdriver.chrome.driver",readconfig.getChromePath());
        driver = new ChromeDriver();
        }
        else if (br.contentEquals("firefox"))
        {
            System.setProperty("webdriver.gecko.driver",readconfig.getFirefoxPath());
            driver = new FirefoxDriver();
        }
        else if(br.contentEquals("ie"))
        {
            System.setProperty("webdriver.ie.driver",readconfig.getIEPath());
            driver = new InternetExplorerDriver();
        }
        driver.get(baseURL);
        driver.manage().window().maximize();
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().pageLoadTimeout(20,TimeUnit.SECONDS);
        driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);

        }

    @AfterClass
    public void tearDown() {


        driver.quit();
    } 

public void login()
    {
         LoginPage lp = new LoginPage(driver);
         lp.setUserName(username);
         lp.setPassword(password);
         lp.clickSubmit();

    }

这是课程文件的代码

public class CM_TC01_PatientSearchTest extends BaseClassTest {

    CM_PatientSearchPage ps = new  CM_PatientSearchPage(driver);

    @BeforeClass    
    public void loginintoApp()
    {
        login();

    }


    @Test(priority=1)
    public void PatientSearchTest() throws Exception
    {

        ExtentTestManager.getTest().log(Status.INFO,"Hey i am in Patient Search Test"); 

        Thread.sleep(2000);
        ps.hoverTest();
        ps.clickContractOptionTextbox();
        ps.selectContractOption();
        ps.enterPatientName("Peggy");
        Thread.sleep(2500);

    }
    @Test(priority=2)
    public void clearRecordsButton() throws Exception
    {
        CM_PatientSearchPage ps = null;
        ps.clearPatientSearchRecords();
    }


}

这里是testng.xml文件的代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="" parallel="false">
    <listeners>
        <listener class-name="com.hospital.extentReport.TestListener"/>
    </listeners>

  <test name="PPP Test">
    <parameter name="browser" value="chrome"/>
    <classes>
      <class name="com.hospitalanalytics.testCases.CM_TC01_PatientSearchTest"/>

    </classes>
  </test> <!-- Test -->/>

</suite> <!--  Suite -->

任何人都可以帮助我吗?对我有很大的帮助。预先感谢。

testng
1个回答
0
投票

这是NullPointerException,因为您将ps设置为null,然后尝试调用其方法。有关NPE的更多详细信息,请参见here

如果您更改订单,您的代码将可用:

public class CM_TC01_PatientSearchTest extends BaseClassTest {

    CM_PatientSearchPage ps = null;

    @BeforeClass    
    public void beforeClass()
    {
        ps = new  CM_PatientSearchPage(driver);
        login();
    }


    @Test(priority=1)
    public void PatientSearchTest() throws Exception
    {

        ExtentTestManager.getTest().log(Status.INFO,"Hey i am in Patient Search Test"); 

        Thread.sleep(2000);
        ps.hoverTest();
        ps.clickContractOptionTextbox();
        ps.selectContractOption();
        ps.enterPatientName("Peggy");
        Thread.sleep(2500);

    }
    @Test(priority=2)
    public void clearRecordsButton() throws Exception
    {
        ps.clearPatientSearchRecords();
    }
}

我已将ps的初始化转移到带有@BeforeClass注释的方法中(从loginintoApp重命名,因为现在更多)。这样,ps将可用于您班上的所有测试方法。

© www.soinside.com 2019 - 2024. All rights reserved.