如何通过反射以所需/正确的顺序调用方法



我是java和selenium的新手,并试图通过使用java反射从类B中执行类A中的方法(测试)。这些方法正在被调用和执行。但问题是,这些方法并没有按照它们在类A中编写的顺序或所需的顺序执行。

例如

。类A按顺序有以下方法:

1. Login
2. Go to Page 1 --> do some activity
3. Go to Page 2 --> do some activity
4. Go to Page 4 --> do some activity
5. Logout

当它们在类B中通过反射调用时,它将序列更改为:

4. Go to Page 4 --> do some activity
2. Go to Page 1 --> do some activity
5. Logout
1. Login
2. Go to Page 1 --> do some activity

由于这个原因,该方法失败,因为第一步是登录,因为用户没有登录,Go to Page 4 -> do some activity不能执行。

如何使方法以正确的格式执行。有什么命名格式吗?

A类:

    public void Login()  
        { 
            //Some action;
        }
        public void GoToHomepage() 
       {
          //Some action;
        }
        public void GotoPageOne(){
            //Some action;
        }

        public void GotoPageTow(){
            //Some action;
        }
        public void GotoPageThree(){
            //Some action;
        }
        public void GotoPagefour(){
            //Some action
        }

类B(通过反射从类A调用方法)

    public static void main (String args[]){
    public static Method[] method;
    ClassA wa = new ClassA(driver);
            method=wa.getClass().getDeclaredMethods();
             for (int i=0;i<=method.length-1;i++){
             System.out.println(method[i].getName());
             method[i].invoke(wa);

方法按照执行的顺序打印。

如果我做错了,请告诉我。

根据文档,结果数组没有排序。您可以使用Collections.sort()对它们进行排序。

但是一般来说,在它们的声明顺序之后调用它们不是一个好主意,因为它在任何时候都不是灵活的。更改源代码的顺序会导致问题。

如果你想要一个有序的顺序,只需编写一个方法,它将按照你想要的顺序调用所有的方法,就像这样:

class TestA {
    private A aToTest = new A();
    public void callSequence() {
        aToTest.login();
        aToTest.goToHomePage();
        aToTest.goToPageOne();
        ...
    }
}
class B {
    public static void main (String args[]){
    public static Method[] method;
    Class<TesttA> clazz = TestA.class;
    method = clazz.getDelcareMethods();
    method[0].invoke();
}

相关内容

  • 没有找到相关文章

最新更新