有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法在testng中实例化类问题

我在运行TestNG XML时遇到一个问题,它给了我一个错误“无法实例化类测试。ZonesTestCases”,请检查下面的XML和“ZonesTestCases”以及打开浏览器和URL路径的测试库

testngxml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Idialogue Project">
    <test name="Login and Zone Test Cases">
        <parameter name="browserType" value="chrome" />
        <parameter name="appURL"
            value="https://41.206.136.84/IDialogueTest/login" />
        <classes>
            <class name="Tests.ZonesTestCases" />
        </classes>
    </test>
</suite>

分区测试用例。爪哇

package Tests;

import java.io.IOException;


import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import Pages.HomePagePOM;
import Pages.LoginPOM;
import Pages.ZonePOM;
import Utilities.ExcelReader;

public class ZonesTestCases extends TestBase
{
    HomePagePOM HPPOM;
    ZonePOM ZonePOM;
    LoginPOM Login;

    
    public String ZoneUpdate = "";
    public String ZoneDelete = "";
    public String ZoneTypeEdit = "";
    public String ZoneExist="";


    private By ZoneUpdateBy = By.xpath("//tr/td[contains(text(), '"+ZoneUpdate+"')]/..//*[contains(text(), 'edit')]");
    public WebElement ZoneUpdatebtn = driver.findElement(ZoneUpdateBy);


    private By ZoneDeleteBy = By.xpath("//tr/td[contains(text(), '"+ZoneDelete+"')]/..//*[contains(text(), 'edit')]");
    public WebElement ZoneDeletebtn = driver.findElement(ZoneDeleteBy);


    private By ZoneTypeby = By.xpath("//span[contains(text(), '"+ZoneTypeEdit+"')]");
    public WebElement ZoneTypeList = driver.findElement(ZoneTypeby);


    private By ZoneExistby = By.xpath("//td[contains(text(), '"+ZoneExist+"')]");
    public WebElement ZoneExistlbl = driver.findElement(ZoneExistby);

    @DataProvider(name="Zone")
    public Object[][] userRegisterData() throws IOException
    { 
        ExcelReader ER = new ExcelReader();
        return ER.getExcelData();
    }

    @BeforeTest
    public void LoginFunZone() throws InterruptedException
    {
        Login = new LoginPOM(driver);
        Login.Login();      
    }
    
    @Test(dataProvider="Zone")
    public void AddNewZone(String ZoneName , String ZoneType , String Operation)
    {
        if (Operation =="Add")
        {
            HPPOM.ManageContent.click();
            HPPOM.Zones.click();
            ZonePOM.AddZonebtn.click();
            ZonePOM.ZoneNametxt.sendKeys(ZoneName);
            ZonePOM.ZoneTypeDDL.click();
            ZoneTypeEdit = ZoneType;
            ZoneTypeList.click();
            ZonePOM.Savebtn.click();
        }
    }
    //  @Test(dataProvider="Zone")
    //  public void EditZone(String ZoneName , String ZoneType , String Operation)
    //  {
    //      if(ZoneName !="Delete" && Operation != "Add" )
    //      {
    //          ZoneUpdate = ZoneName;
    //      }
    //      ZoneUpdatebtn.click();
    //      ZonePOM.ZoneNametxt.sendKeys(ZoneName);
    //      ZonePOM.ZoneTypeDDL.click();
    //      ZoneTypeEdit = ZoneType;
    //      ZoneTypeList.click();
    //      ZonePOM.Savebtn.click();
    //      
    //      ZoneExist = ZoneName;
    //      
    //      if(driver.findElements(By.xpath("//td[contains(text(), '"+ZoneExist+"')]")).size() != 0)
    //      {
    //          System.out.println("Zone is Edited Successfully");
    //      }
    //
    //      
    //
    //  }
    //
    //  @Test(dataProvider="Zone")
    //  public void DeleteZone(String ZoneName , String ZoneType , String Operation)
    //  {
    //      if(ZoneName =="Delete")
    //      {
    //          ZoneDelete = Operation;
    //      }
    //      ZoneDeletebtn.click();
    //      ZonePOM.Confirmbtn.click();
    //
    //      ZoneExist = ZoneName;
    //
    //      if(driver.findElements(By.xpath("//td[contains(text(), '"+ZoneExist+"')]")).size() == 0)
    //      {
    //          System.out.println("Zone is Deleted Successfully");
    //      }
    //  }
    //  
    @AfterTest
    public void LogoutFun() throws InterruptedException
    {
        //create three variables 1- UserName 2-Password 3-AgentName and make it readable from excel sheet
        Login = new LoginPOM(driver);
        Login.Logout();     
    }
}

测试基地。爪哇

public class TestBase 
{
    public static WebDriver driver;

    @BeforeSuite
    @Parameters ({"browserType" , "appURL"})
    public void StartDriver(@Optional ("chrome") String BrowserType , @Optional ("https://41.206.136.84/IDialogueTest/login") String URL)
    {
        switch (BrowserType) 
        {
        case "chrome":
            System.out.println("Launching Chrome browser..");
            System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"/Adds/chromedriver.exe");
            driver = new ChromeDriver();
            break;
        case "firefox":
            System.out.println("Launching Firefox browser..");
            driver = new FirefoxDriver();
            break;
        }
        driver.manage().window().maximize();
        driver.navigate().to(URL);
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    }

我不知道如何解决这个问题有什么建议吗

错误

[RemoteTestNG] detected TestNG version 6.14.2
org.testng.TestNGException: 
Cannot instantiate class Tests.ZonesTestCases
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:30)
    at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:423)
    at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:336)
    at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:125)
    at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:190)
    at org.testng.TestClass.getInstances(TestClass.java:95)
    at org.testng.TestClass.initTestClassesAndInstances(TestClass.java:81)
    at org.testng.TestClass.init(TestClass.java:73)
    at org.testng.TestClass.<init>(TestClass.java:38)
    at org.testng.TestRunner.initMethods(TestRunner.java:389)
    at org.testng.TestRunner.init(TestRunner.java:271)
    at org.testng.TestRunner.init(TestRunner.java:241)
    at org.testng.TestRunner.<init>(TestRunner.java:192)
    at org.testng.remote.support.RemoteTestNG6_12$1.newTestRunner(RemoteTestNG6_12.java:33)
    at org.testng.remote.support.RemoteTestNG6_12$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG6_12.java:66)
    at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:713)
    at org.testng.SuiteRunner.init(SuiteRunner.java:260)
    at org.testng.SuiteRunner.<init>(SuiteRunner.java:198)
    at org.testng.TestNG.createSuiteRunner(TestNG.java:1295)
    at org.testng.TestNG.createSuiteRunners(TestNG.java:1273)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1128)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:24)
    ... 25 more
Caused by: java.lang.NullPointerException
    at Tests.ZonesTestCases.<init>(ZonesTestCases.java:31)
    ... 30 more

共 (1) 个答案

  1. # 1 楼答案

    大多数情况下,这是基于IDE配置的。请检查特定于浏览器的项目配置设置。错误的原因基本上是TESNNG xml文件无法找到测试。分区用例类