我不明白为什么错误“非静态方法getLoginPage()不能从静态上下文中引用”在这里!?这里没有任何静态的!似乎微不足道,但我不知道我错过了什么。为什么非静态引用错误,而没有静态定义?
编辑: 据我了解,通过实例TestFramework我可以摆脱错误的,但作为推荐,我试图避免在我的单元测试实例化对象,如果需要传递对象创建我的框架。另一方面,使TestFramework中的getLoginPage()成为静态的,在我的TestFramework类中创建了一大堆类似的错误!
类Tests.java:
public class Tests {
@Test
public void User_Can_Login(){
String username = "Jake";
String password = "Jake";
TestFramework.getLoginPage().Login(username, password);
assertTrue(TestFramework.getLoginPage().CheckIfLoggedIn(username));
}
类TestFramework.Java:
public class TestFramework {
private LoginPage loginPage;
public LoginPage getLoginPage() {
loginPage = new LoginPage();
PageFactory.initElements(Browser.getDriver(), loginPage);
return loginPage;
}
public class LoginPage {
String Url = "http://localhost:8080";
String welcomeMsg = "Welcome";
public void Login(String username, String password) {
Browser.Goto(Url);
Browser.Input(username,password);
Browser.Submit();
}
public boolean CheckIfLoggedIn(String user){
return Browser.getTextByxpath("/html/body/header/div/p").contains(welcomeMsg + " " + user);
}
}
可能是因为你没有TestFramework的情况下... – Ordous
'getLoginPage()'方法也不是一成不变的。所以你不能像'TestFramework.getLoginPage()'调用。您需要创建对象'new TestFramework()。getLoginPage();' –
在附注中,您可能希望引用Java命名约定,即以小写字母开头的方法名称,无下划线等 – JamesB