Исключение Java Nullpointer при чтении файла свойств - PullRequest
0 голосов
/ 14 июня 2019

Получение ниже исключения Java нулевого указателя при чтении файла Config.properties. LoginTest.java расширяет TestBase.java и вызывает конструктор TestBase для загрузки свойств конфигурации и вызывает метод initializeTestBase для получения свойств из файла конфигурации. java.lang.NullPointerException at com.crm.testbase.TestBase.initializeTestBase (TestBase.java:35)

TestBase.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"));
  }
}

LoginTest.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();
  }
}

Config.properties

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)

1 Ответ

2 голосов
/ 14 июня 2019

В TestBase.java у вас есть статическая переменная с именем prop, которая не инициализирована.

Затем, внутри вашего блока try в конструкторе, вы делаете это:

Properties prop = new Properties();

Это создает новую локальную переменную с именем prop, которая скрывает статическую переменную и вообще не изменяет статическую переменную prop, поэтому она остается нулевой. Все операции в этом блоке try, который ссылается на prop, используют эту локальную переменную, а не статическую переменную.

Затем, когда вы доберетесь до

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

Вы пытаетесь вызвать метод из этой нулевой переменной, что приводит к исключению, которое вы видите.

Решение состоит в том, чтобы изменить конструктор, чтобы иметь:

prop = new Properties()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...