测试示例
被测试类:
package demo;
public class Calculator {
// 非静态函数
public int add(int a, int b) {
return a+b;
}
// 静态函数
public static int staticAdd(int a, int b) {
return a+b;
}
// 空函数
public void noop() {
System.out.println("没有被 mock");
}
}
测试1:
package demo;
import mockit.Invocation;
import mockit.Mock;
import mockit.MockUp;
import org.junit.Test;
public class CalculatorTest {
@Test
public void test_add_01() {
Calculator calculator = new Calculator();
// mock
new MockUp<Calculator>() {
@Mock
public int add(Invocation invocation, int a, int b) {
// 当 a == 1 时,调用原始逻辑
if (a == 1) {
return invocation.proceed(a, b);
}
return 1;
}
};
System.out.println(calculator.add(1, 2));
System.out.println(calculator.add(2, 1));
}
}
执行结果:
3
1
测试2:
package demo;
import mockit.Invocation;
import mockit.Mock;
import mockit.MockUp;
import org.junit.Test;
public class CalculatorTest {
@Test
public void test_add_01() {
Calculator calculator = new Calculator();
// mock
new MockUp<Calculator>() {
@Mock
public int add(Invocation invocation, int a, int b) {
// 当 a == 1 时,调用原始逻辑
if (a == 1) {
return invocation.proceed(a, b);
}
return 1;
}
@Mock
public void noop(Invocation invocation) {
System.out.println("调用原始逻辑");
invocation.proceed();
}
};
calculator.noop();
}
}
执行结果:
调用原始逻辑
没有被 mock