У меня есть абстрактный класс контроллера, который расширяет Mainpage
.Также я не могу делать какие-либо изменения в MainPage
.Its не редактируемыеПолучить объект абстрактного класса в другом классе
public abstract class Controller extends MainPage {
public Controller(Remote remor) throws UnsuppoOSException, PException {
super(remor);
}
}
MainPage класс
public abstract class MainPage implements IPageObject {
public Remote mDriver;
public MainPage(Remote driver) throws PException {
if (driver == null)
throw new NullPointerException("Cannot initialize with null driver");
this.mDriver = driver;
}
}
Что мне нужно - это получить объект контроллера и использовать его в другом классе FactoryIndo
Для этого я расширил класс контроллера.
public abstract class FactoryIndo extends Controller {
public static Remote mDriver;
public FactoryIndo(Remote remor) throws UnsuppoOSException, PException {
super(remor);
mDriver = remor;
}
public List<TestContext> getBrowserTestContext(List<String> browsers)
throws Exception {
Map<String, Object> browserMap = new HashMap<String, Object>();
browserMap.put(MasterConstants.BROWSER, this); // HERE am passing the object of Controller
TestContext testContext = new TestContext(browser, browserMap);
return testContext;
}
public static List<TestContext> getTestContext(List<String> browsers)
throws Exception {
FactoryIndo instanceSel = new FactoryIndo(mDriver);
List<TestContext> contexts = instanceSel
.getBrowserTestContext(browsers);
return contexts;
}
}
При вызове этого метода getTestContext в другом классе am get Невозможно инициализировать нулевым драйвером. Что не так с моим кодом. Кроме того, без расширения класса Контроллер является любым возможным способом получить объект этого в классе FactoryIndo
Это потому, что getTestContext является статическим, и когда она инициализируется mDriver равна нулю. –
Класс контроллера является абстрактным классом, и он не может быть создан, а не создание экземпляра может быть анонимным подклассом экземпляра контроллера таким образом: Controller control = new Controller() {}; в вашем классе FactoryIndo. –
Я не могу сделать это..coz в родительском mainclass нет такого конструктора .. – Psl