У меня есть три класса, как показано ниже:
И когда я запускаю тест как TestNG из «Тестов. java», я получаю исключение java .lang.NullPointerException:
ПРИМЕЧАНИЕ :
-Он успешно выбирает имя браузера 'chrome' из файла .properties.
-Если я отбрасываю класс 'Tests. java' и перемещаю метод @Test к классу 'LaunchBrowserTemp. java' и добавьте оставшиеся соответствующие теги (т. е. BeforeClass, BeforeMethod, AfterClass, AfterMethod) к соответствующим методам в LaunchBrowserTemp. java ', он работает нормально. Сбой только в том случае, если я оставляю аннотации testng в классе 'Tests. java'.
src \ main \ java \ utilities \ LaunchBrowserTemp. java
public class LaunchBrowserTemp {
private static ChromeDriverService srvc;
private static WebDriver driver;
private static String browser = getProperties("selenium.browser");
private static final String baseBrowserPath = "src\\main\\resources\\drivers\\";
private static ChromeOptions options;
public static void initBrowser() throws Exception {
switch (browser.toLowerCase()){
case "chrome":
options = new ChromeOptions();
options.addArguments("--start-maximized");
options.addArguments("--disable-extensions");
options.setAcceptInsecureCerts(true);
srvc = new ChromeDriverService.Builder()
.usingDriverExecutable(new File(baseBrowserPath + "chromedriver.exe"))
.usingAnyFreePort()
.build();
srvc.start();
break;
default:
throw new Exception("Browser Not handled in code!");
}
}
public static void stopDriverService() {
srvc.stop();
}
public void startDriver() {
driver = new RemoteWebDriver(srvc.getUrl(), options);
}
public void endDriver() {
driver.quit();
}
public static WebDriver driver() {
return driver;
}
}
src \ main \ java \ utilities \ LoadProperties. java
public class LoadProperties {
public static String getProperties(String propName) {
Properties prop = new Properties();
try {
FileInputStream fis = new FileInputStream("src/main/resources/config.properties");
prop.load(fis);
} catch (Exception e){}
return prop.getProperty(propName);
}
}
src \ test \ java \ Tests. java
public class Tests {
LaunchBrowserTemp obj = new LaunchBrowserTemp();
@BeforeClass
public void init() throws Exception{
LaunchBrowserTemp.initBrowser();
}
@BeforeTest
public void start(){
obj.startDriver();
}
@Test
public void openUrl(){
driver().get("https://www.google.com");
}
@AfterTest
public void teardown(){
obj.endDriver();
}
@AfterClass
public void terminate() {
LaunchBrowserTemp.stopDriverService();
}
}
Снимок экрана ошибки