2013-05-01 47 views
0

這裏嘲笑對象上是我的測試用例的相關部分:JMockit的NullPointerException在期望

@NonStrict 
private StowServiceWrapper mockStowServiceWrapper; 

@NonStrict 
private IsItemStowableResponse mockIsItemStowableResponse; 

@NonStrict 
private IsItemStowable mockIsItemStowable; 

... 

@Test 
public void testMoveItemActivitySuccess() { 
    final MoveItemActivity activity = new MoveItemActivity();   

    final MoveItemRequest request = new MoveItemRequest(); 

    new Expectations() { 

     { 
      invoke(activity, "isItemStowable", request); result=mockIsItemStowable; 
      //activity.isItemStowable(request); result=mockIsItemStowable; 
      mockStowServiceWrapper.isItemStowableToBin(anyString, anyString, anyString, anyString); result=mockIsItemStowableResponse; 
      mockIsItemStowableResponse.hasFilterResults();result=false; 
     } 
    }; 

    MoveItemResponse response = activity.enact(request); 

下面是類源的相關部分(在MoveItemActivity):

StowServiceWrapper stowServiceWrapper = new StowServiceWrapperImpl(); 
private IsItemStowable isItemStowable(MoveItemRequest input) { 

    IsItemStowable isStowable = new IsItemStowable(); 
    isStowable.setIsItemStowable(false); 

    System.out.println("TEST1"); 
    /* First check if item is stowable to bin */ 
    IsItemStowableToBinResponse isItemStowableResponse = stowServiceWrapper.isItemStowableToBin(); 
    System.out.println("TEST2"); 
    /* fastFail is 'true' by default, so stow service request will only return one filter violation at a time */ 
    if (isItemStowableResponse.hasFilterResults()) { 
     ... 
    } 

I」 m在此行發生NullPointerException:if (isItemStowableResponse.hasFilterResults())

我對JMockit比較陌生。我不知道爲什麼它會執行這個方法中的代碼 - 我只是想嘲笑整個方法,因爲它是我試圖單元測試的'enact'方法中的一個依賴項。

+0

您不是在嘲笑Expectations塊中的活動對象;這就是爲什麼該代碼無法正常工作。我在你的回答中看到,你已經轉向了JMockit中的另一種嘲笑方式......基於狀態的,而不是基於你的問題的行爲。無論哪種方式都可以完成這項工作。 – 2013-05-02 15:15:43

回答

0
new MockUp<MoveItemActivity>() 
    { 
     @Mock 
     IsItemStowable isItemStowable(MoveItemRequest request) { 
      return new IsItemStowable(); 
     } 
    }; 

好吧,想出瞭如何模擬被測試的類中的方法。

相關問題