Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从另一个类调用方法进行测试_Java_Selenium Webdriver - Fatal编程技术网

Java 如何从另一个类调用方法进行测试

Java 如何从另一个类调用方法进行测试,java,selenium-webdriver,Java,Selenium Webdriver,我试图使用java从另一个类调用一个方法。 所以我有一个类从另一个类调用log方法,它工作得很好。 在此之后,我想从另一个类调用另一个方法来获取当前url 这是我的A班和B班 问题:如何调用该方法来获取当前url? 多谢各位 public class A{ private String url; public A(WebDriver driver){ url = driver.getCurrentUrl(); System.out

我试图使用java从另一个类调用一个方法。 所以我有一个类从另一个类调用log方法,它工作得很好。 在此之后,我想从另一个类调用另一个方法来获取当前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();

    } 

为字符串url创建一个getter和setter,以便您可以公开访问它:

public String getUrl() {
    return this.url;
}
哦,塞特:

public void setUrl(String url) {
    this.url = url;
}
这遵循JavaBeans约定,将字段紧密封装到类中,但允许数据不可更改,或者只允许需要的数据

例如,如果需要,您可以说url不能超过16个字符(仅作为示例):

编辑:有一个显示进一步实现的请求。详情如下:

您有两个类,类A和类B。假设它们都在各自的源代码文件中。现在有两个文件如下所示:

String url2 = test1.getUrl();
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;
    }

}
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));
}
B.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;
    }

}
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。您还需要初始化传入的构造函数所需的所有字段,例如WebDriver。这些对象的初始化方式与我在第2点中提到的对象相同


    我希望这一切都有帮助

    首先,您不需要调用
    test1.A()
    。它不是一个方法,而是类
    a
    的公共构造函数

    如果需要从另一个类获取
    private
    variable
    url
    ,可以创建方法:

    public String getUrl() {
      return this.url;
    }
    
    然后在你的课堂上得到它,就像这样:

    String url2 = test1.getUrl();
    

    如果我试一下你的例子,它只是打开了一个空白page@user3610075但是这个语句
    stringURL2=test1.getUrl()
    不是用来向您显示某些内容,而是用来存储变量
    url
    从类
    A
    到变量
    url2
    。要显示在
    url2
    中存储的内容,需要
    System.out.println(test1.getUrl())。如果
    url
    变量不是空的,它会显示这个变量
    url
    中的内容。谢谢Alexander PodKutin,这对我来说是非常有用的。但我做到了:在类A中,我添加了driver.get(driver.getCurrentUrl());现在我如何在类B中调用它,我忘了告诉我我是webdriver和Java的初学者在这里我不知道该做什么,以及把前三个代码放在哪里。好的,你的类需要在单独的文件中,或者你需要去掉类B的公共访问修饰符。两个类都缺少右括号。几分钟后在我的帖子中看到我的编辑,以获得更多更好的澄清@用户3610075