所以我在基础包中有一个基类,我将该基类扩展到另一个包中的另一个类。
在扩展类中我得到这个错误:“默认构造函数未定义隐式超类构造函数BaseTestMethod()。必须定义一个显式构造函数”。我尝试添加super()但它没有解决问题。有人可以帮忙吗
基类:
public class BaseTestSuite{
public WebDriver driver;
@Parameters("browserType")
@BeforeSuite
public void beforeSuite(String browserType) {
System.out.println("BaseTestSuite -> Before Test Suite");
if (browserType.equalsIgnoreCase("firefox")) {
System.getProperty(DefaultStrings.FIREFOX_DRIVER_KEY, DefaultStrings.FIREFOX_DRIVER_PATH);
driver = new FirefoxDriver();
} else if (browserType.equalsIgnoreCase("chrome")) {
System.setProperty(DefaultStrings.CHROME_DRIVER_KEY, DefaultStrings.CHROME_DRIVER_PATH);
driver = new ChromeDriver();
}
}
}
扩展类:
public class FlockSignIn extends BaseTestMethod {
private WebDriver driver;
private static final Logger log = LogManager.getLogger(FlockSignIn.class.getName());
static GenericMethods gm;
public WebDriver getDriver(){
return driver;
}
FlockSignIn(String browserType){
super browserType;
}
@BeforeClass
public void beforeClass() {
/*System.out.println("BaseTestSuite -> Before Test Suite");
if (browserType.equalsIgnoreCase("firefox")) {
System.getProperty(DefaultStrings.FIREFOX_DRIVER_KEY, DefaultStrings.FIREFOX_DRIVER_PATH);
driver = new FirefoxDriver();
} else if (browserType.equalsIgnoreCase("chrome")) {
System.setProperty(DefaultStrings.CHROME_DRIVER_KEY, DefaultStrings.CHROME_DRIVER_PATH);
driver = new ChromeDriver();
}*/
gm = new GenericMethods(driver);
gm.maximize();
driver.get(DefaultStrings.FLOCK_WEB_PREPROD);
log.info("Opening the webclient");
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
}
答案 0 :(得分:1)
在BaseTestMethod类中,添加构造函数
public BaseTestMethod(){
.....
}
或者 修改你的flockSignIn构造函数:
FlockSignIn(String browserType){
super (param defined in BaseTestMethod's constructor);
..
}
答案 1 :(得分:1)
实施存在多个问题:
BaseTestSuite
,您正在扩展
BaseTestMethod
。如果默认构造函数super()
被隐式调用,并且如果父项有自己的重载构造函数,我们需要调用super(argument list)
而不是super argument list
我希望它能解决你的问题。