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