我试图使用java从另一个类调用一个方法。 所以我所拥有的是从另一个类调用日志方法的类,它运行良好。 在此之后,我想从另一个类调用另一个方法来获取当前的url。
所以我的答案是A和B
问题:如何调用方法来获取当前的url? 谢谢
public class A{
private String url;
public A(WebDriver driver){
url = driver.getCurrentUrl();
System.out.println("The current URL is:"+url);
Util.wait(5);
}
public class B {
@BeforeClass
public static void Log(){
//some code here to check if log is ok
}
@Test
public void A(){
A test1 = new A(driver);
String url2 =test1.A();
}
答案 0 :(得分:0)
为字符串网址创建一个getter和setter,以便您可以公开访问它:
public String getUrl() {
return this.url;
}
哦,安德尔:
public void setUrl(String url) {
this.url = url;
}
这遵循Java Beans惯例,通过将字段紧密封装到类中,但允许数据不可更改,或者只允许所需数据更改。
例如,如果您愿意,可以说网址不能超过16个字符(仅作为示例):
public void setUrl(String url) {
if (url.length() <= 16)
this.url = url;
}
然后阻止更改长度超过16个字符的网址。
然后你可以在测试类中调用它:
@Test
public void getUrl_worksWithUrlLessThan16Length() {
A test1 = new A(driver);
String url = "www.google.com";
A.setUrl(url);
assertTrue(A.getUrl().equals(url));
}
编辑:有人要求进一步实施。如下:
你有两个类,A类和B类。假设他们都在自己的源代码文件中。所以现在你有两个看起来像这样的文件:
<强> A.java:强>
public class A {
private String url;
public A(WebDriver driver){
url = driver.getCurrentUrl();
System.out.println("The current URL is:"+url);
Util.wait(5);
}
public void setUrl(String url) { //THIS IS A SETTER
this.url = url;
}
public String getUrl() { //THIS IS A GETTER
return this.url;
}
}
<强> B.java:强>
package com.secondClasses.A;
import com.classes.B;
public class B {
A test1;
Webdriver driver;
String url2;
@BeforeClass
public static void Log(){
//some code here to check if log is ok
}
@Before
public void setUp() {
driver = new WebDriver();
test1 = new A(driver);
}
@After
public void cleanUp() {
driver = null;
test1 = null;
url2 = null;
System.gc();
}
@Test
public void A(){
url2 = test1.getUrl();
assertTrue(url2.equals(url));
}
}
这里有一些事情发生了:
您将A类导入B类,以便使用它。
创建要使用的A类实例。
2a上。 **(非常重要的一点):**在任何测试方法之前初始化对象引用。注意我说对象引用。
2B。使用注释@Before在setUp()或init()方法中实例化对象,该注释将在每个测试方法运行之前实例化对象 。这有助于使我们的测试彼此独立。
2c中。然后我们取消引用cleanUp()方法中的对象并建议运行垃圾收集器,这样我们就可以清除堆中的对象了。
3.然后,要访问A类的字段,我们可以使用它为我们制作的getter和setter方法。 3A。您还需要初始化传递A的构造函数所需的所有字段,例如WebDriver。它们的初始化方式与我在第2点中谈到的对象相同。
我希望这一切都有帮助!
答案 1 :(得分:0)
首先,您无需致电test1.A()
。它不是一种方法,它是类A
的公共构造函数。
如果您需要从另一个类获取private
变量url
,您可以创建方法:
public String getUrl() {
return this.url;
}
并在课程B
中获取,如下所示:
String url2 = test1.getUrl();