簡體   English   中英

對象創建模擬模型

[英]Object creation mocking mockito

我有一個班級的頂部和底部。 我想對創建底部對象的原子類進行單元測試。

public class top {

  publiv top() {
     bottom b = new bottom("value");
  }
}

單元測試班:

public class topTest {
   @Test
   public void test(){ 
     top a = new top();
   }
}

在測試中為頂級類別創建對象時,它將為底層類別創建對象。

在這里,我想模擬底層對象的創建。 誰能幫我這個忙。

為此,您應考慮將底部對象作為參數傳遞。 當對象依賴於該對象時,始終將對象作為參數傳遞始終是一個好習慣。

public class Top {
   private Bottom bottom;

   public Top(Bottom bottom) {
      this.bottom = bottom
   }
}

public class TopTest {
   @Test
   public void test(){ 
      Bottom bottom = mock(Bottom.class);
      Top top = new Top(bottom);
   }
}

您將需要將創建底部實例的邏輯移動到某個地方。 可以使用類似的可覆蓋方法:

public class top {

  public top() {
     bottom b = new bottom("value");
  }

  protected bottom createBottom() {
     return new bottom("value");
  }
}

然后您可以在測試中覆蓋它:

public class topTest {
   @Test
   public void test(){ 
     top a = new top() {
            protected bottom createBottom() {
               return Mockito.mock(bottom.class);
             }   
             };
   }
}

或者,您創建一個BottomCreator類,在構造時將其傳遞給Top,並在測試時使用模擬/偽造版本。

public class top {

      private final BottomCreator bottomCreator;

      public top(BottomCreator creator) {
           this.bottomCreator = creator;
      }

      public top() {
         bottom b = bottomCreator.newBottom();
      }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM