Java 预期中模拟对象上的JMockit NullPointerException

Java 预期中模拟对象上的JMockit NullPointerException,java,unit-testing,mocking,jmockit,Java,Unit Testing,Mocking,Jmockit,以下是我的测试用例的相关部分: @NonStrict private StowServiceWrapper mockStowServiceWrapper; @NonStrict private IsItemStowableResponse mockIsItemStowableResponse; @NonStrict private IsItemStowable mockIsItemStowable; ... @Test public void testMoveItemActivitySu

以下是我的测试用例的相关部分:

@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中):

我在这一行得到了一个NullPointerException:
if(IsItemsToTableResponse.hasFilterResults())

我对JMockit比较陌生。我不确定它为什么要在这个方法中执行代码——我只想模拟整个方法,因为它是我试图进行单元测试的“颁布”方法中的一个依赖项。

new MockUp()
    new MockUp<MoveItemActivity>()
    {
        @Mock
        IsItemStowable isItemStowable(MoveItemRequest request) {
            return new IsItemStowable();
        }
    };
{ @嘲弄 IsItemStowable IsItemStowable(移动项目请求){ 返回新的ISitemStovable(); } };

Ok找出了如何在被测类中模拟方法。

您不是在预期块中模拟活动对象;这就是代码不起作用的原因。我在你的回答中看到,你已经转向了JMockit中的另一种嘲弄方式……在你的问题中,是基于状态的,还是基于行为的。任何一种方法都可以完成这项工作。
    new MockUp<MoveItemActivity>()
    {
        @Mock
        IsItemStowable isItemStowable(MoveItemRequest request) {
            return new IsItemStowable();
        }
    };