读取属性文件时出现 Java 空指针异常


读取

Config.properties 文件时低于 java 空指针异常。LoginTest.java扩展了TestBase.java并调用TestBase构造函数来加载配置属性,并调用initializeTestBase方法从配置文件中获取属性。 java.lang.NullPointerException at com.crm.testbase.TestBase.initializeTestBase(TestBase.java:35(

测试库.java

public class TestBase {
  public static WebDriver driver;
  public static Properties prop;
  public TestBase() 
  {
    try
    {
      Properties prop = new Properties();
      FileInputStream fp = new FileInputStream("E:\Photon WorkSpace\My_DD_FRAMEWORK"
        + "\src\main\java\com\crm\config\Config.properties");
      prop.load(fp);
      System.out.println("printing config="+prop.getProperty("browser"));
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public static void initializeTestBase()
  {
    String browser=prop.getProperty("browser");
    System.out.println("printg initilaz test base browser"+ prop.getProperty("browser"));
    if(browser.equals("chrome"))
    {
      System.setProperty("webdriver.chrome.driver", "E:\Selenium Jar\chromedriver.exe");
      driver = new ChromeDriver();
    }
    driver.manage().window().maximize();
    driver.manage().deleteAllCookies();
    driver.manage().timeouts().pageLoadTimeout(TestUtil.PAGE_LOAD_TIMEOUT, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(TestUtil.IMPLICIT_WAIT, TimeUnit.SECONDS);
    driver.get(prop.getProperty("url"));
  }
}

登录测试.java

public class LoginTest extends TestBase{
  LoginPage loginPage;
  HomePage hp;
  public  LoginTest()
  {
    super();
  }
  @BeforeMethod
  public void setup()
  {
    System.out.println("calling initalize base");
    initializeTestBase();
    loginPage = new LoginPage();
  }
}

配置属性

browser=chrome
user=mytest
password=test
url=https://classic.mycrm.com/index.html

空指针异常

RemoteTestNG] detected TestNG version 6.11.0
printing config=chrome
calling initalize base
FAILED CONFIGURATION: @BeforeMethod setup
java.lang.NullPointerException
at com.crm.testbase.TestBase.initializeTestBase(TestBase.java:30)
at com.crm.testcases.LoginTest.setup(LoginTest.java:24)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

在 TestBase.java 中,您有一个名为 prop 的静态变量,该变量未初始化。

然后,在构造函数的 try 块中,执行以下操作:

Properties prop = new Properties();

这将创建一个名为 prop 的新局部变量,该变量隐藏静态变量,并且根本不修改静态prop变量,因此它保持 null。 引用prop的 try 块中的所有操作都使用该局部变量,而不是静态变量。

然后,当你到达

String browser=prop.getProperty("browser");

尝试从该 null 变量调用方法,这会导致您看到的异常。

解决方案是将构造函数更改为具有:

prop = new Properties()

最新更新