0

こんにちは: 通常、モック (Java エージェント) を使用して、クラス内のオブジェクトを置き換えます。

例えば:

public class ClassA{
  public ClassB realObjectB;
  public ClassC realObjectC;


  public void Method1(){
       realObjectC = new ClassC();
       realObjectB =  new ClassB(realObjectC);   
  }     

  ...

  ...   

}

public class ClassB {


      public void ParticularInhereitedMethod(){
          many dependency objects involved...
      }  

} 

もちろん、ClassB と ClassC には、接続プールなど、他にも多くの依存関係があります。

テストを行う場合、次のことを行ってもよろしいですか:

 public class Mock extends ClassB{        

 @override  
 public class ParticularInhereitedMethod(){
      Make clean codes, no dependency.
 }

}

テスト アプリケーションでは:

   public class MainClass{

          public static void main(String[] args){
                  ClassA a = new ClassA();
                  ClassM m = new Mock();
                  a.realObjectB = m; 

                  manipulate m;
          }

   }  

上記の方法は実際のテストで機能しますか? Java エージェント (バイトコード置換) を使用する必要があるのはなぜですか?

4

2 に答える 2

2

問題を解決するには、Mockito http://code.google.com/p/mockito/と Spring インジェクションを使用することをお勧めします。

mockito tou を使用すると、パラメーターからオブジェクトの戻りパラメーターを宣言できます。Spring を使用すると、実行時にオブジェクトのインスタンスを解決できます。

于 2012-12-12T15:55:58.113 に答える
1

オブジェクトが比較的複雑であるため、モックアウト/置換が難しい場合があります。それらをより簡単な方法でテストし、依存性注入を使用して、サブクラス化せずに実装を置き換える方法を検討します。

于 2012-12-12T15:57:00.337 に答える