junit 测试用例中 NonStrictExpections 到 Expectations 转换的问题

Issue with NonStrictExpections to Expectations conversion in junit test cases

这是我的示例代码示例,当我进行 jmockit 更新相关更改时它开始失败。

class A {

    public static boolean validate(String name, int age, boolean flag) {
        boolean result = false;
        //actual code
        return result;
    }
}

class B {
    public void cal() {
        if (A.validate(name, age, flag)) {
            // some calculations
        }
    }
}

class TestB {
    public B b;

    @Before
    public void setUp() {
        b = new B();
    }

    @Test
    public void testCal() {
        new Expectations() {
            {
                A.validate(anyString, anyInt, anyBoolean);
                times= -1;
                result = Boolean.TRUE;
            }};

        b.cal();

        new Verifications() {
            {
                A.validate(anyString, anyInt, anyBoolean);
            }
        };
    }
}

失败并出现错误

mockit.internal.UnexpectedInvocation: Unexpected invocation of:
A#validate(String name, int age, boolean flag)

我刚刚将 NonStrictExpectations 块更改为 Expectations 块,因为最新的 jmockit 不支持 NonStrictExpectations 块。

new NonStrictExpectations() {
    {
        A.validate(anyString, anyInt, anyBoolean);
        returns(Boolean.TRUE);
    }
};

有了这个块,一切正常。

请告诉我问题出在哪里?

首先,times 使用负值不是有效值。

其次,如果您需要进行可选调用,则应使用 minTimesmaxTimes 变量。在您使用 maxTimes = 1 的情况下,您将实现一个可选的模拟调用。