通过使用特征

时间:2018-08-16 11:21:25

标签: groovy katalon-studio

我有一个静态类'Inner'和一个嵌套的静态类'Deeper',分别位于两个不同的类A,B中。 “内部”类实现特征C,该特征C具有称为ping()的方法。 我想从ping()方法执行方法hello()(属于Deeper),这种方式每次我都会根据调用trait的类获得“ Hello A”或“ Hello B”。 这是我写的(我正在使用katalon-studio):

public class A
{
  static class Inner implements C{
     static class Deeper{ 
         static void hello(){ println 'Hello A'}
    }
  }
}
public class B
{
  static class Inner implements C{
     static class Deeper{ 
         static void hello(){ println 'Hello B'}
    }
  }
}
public static trait C {
     static void ping() {
          this.Deeper.hello()
     }
}

A.Inner.ping()
B.Inner.ping()

我遇到以下错误:

  

08-17-2018 04:46:57 PM-[错误]-测试用例/ V2 /常规/草稿失败   因为未为测试用例定义(of)变量'Deeper'。

2 个答案:

答案 0 :(得分:0)

考虑以下代码:

class A implements C {}
class B implements C {}

trait C { 
    def whoAmI() {
        this.class.simpleName
    } 
}

// ---- main

assert "A" == new A().whoAmI() 
assert "B" == new B().whoAmI() 

答案 1 :(得分:0)

找不到答案。但是,使用非静态类可以按以下方式实现:

public class A{
   class Inner implements C{
      A.Inner.Deeper d = new A.Inner.Deeper()
      class Deeper { 
          void hello(){ 
             println 'Hello A'  
          }
      }
   }
}
public class B{
   class Inner implements C{
      B.Inner.Deeper d = new B.Inner.Deeper()
      class Deeper{ 
          void hello(){ 
             println 'Hello B' 
          }
      }
   }
}

public trait C{
      public void ping(){
         this.d.hello()
      }
}

new A.Inner().ping()
new B.Inner().ping()