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()