我有一个类:Function Library我在构造函数中实例化webdriver实例,如下所示
public class FunctionLibrary {
public WebDriver driver;
public FunctionLibrary(WebDriver driver)
{
driver = new FirefoxDriver();
this.driver=driver;
}
public WebDriver getDriver(){
return this.driver;
}
}
我正在访问扩展超类:函数库
的子类中的webdriver实例public class Outlook extends FunctionLibrary{
public Outlook(WebDriver driver) {
super(driver);
}
@Before
public void testSetUp()
{
getDriver().navigate().to("https://google.com");
}
@After
public void closeTest()
{
getDriver().close();
}
@Test
public void openOutlookAndCountTheNumberOfMails()
{
System.out.println("executed @Test Annotation");
}
}
当我执行上面的junit代码时 我收到错误
java.lang.Exception:测试类应该只有一个公共零参数构造函数
任何人都可以让我在哪里出错
答案 0 :(得分:3)
无需将参数传递给FunctionLibrary
的ctor,因为您只需覆盖其值:
public class FunctionLibrary {
public WebDriver driver;
public FunctionLibrary()
{
this.driver=new FirefoxDriver();
}
// etc.
}
进行此更改意味着您不需要从测试类传递参数:只需删除其构造函数。
答案 1 :(得分:2)
你需要在课程顶部使用@RunWith(Parameterized.class)。
如果使用@Parameters正确,它将运行得很好。 :)
答案 2 :(得分:1)
您没有公共零参数构造函数。测试环境不知道要传递给它的构造函数,因为你需要传递WebDriver
个对象。
public Outlook(WebDriver driver) {
super(driver);
}
那里,您希望测试环境通过什么?而是做一些像保持零arg构造函数,并自己传递WebDriver实例。这样的事情应该有效。
public Outlook() {
super(new FirefoxDriver());
}
希望这有帮助。