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
使用负值不是有效值。
其次,如果您需要进行可选调用,则应使用 minTimes
和 maxTimes
变量。在您使用 maxTimes = 1
的情况下,您将实现一个可选的模拟调用。
这是我的示例代码示例,当我进行 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
使用负值不是有效值。
其次,如果您需要进行可选调用,则应使用 minTimes
和 maxTimes
变量。在您使用 maxTimes = 1
的情况下,您将实现一个可选的模拟调用。