测试示例
被测试类
package demo;
public class Calculator {
public Calculator() {
System.out.println("无参构造函数初始化");
}
static {
System.out.println("静态代码块初始化");
}
}
示例1:
package demo;
import mockit.Mock;
import mockit.MockUp;
import org.junit.Test;
public class CalculatorTest {
@Test
public void test_add_01() {
System.out.println("--- mock 之前 ---");
new Calculator();
// mock
new MockUp<Calculator>() {
@Mock
public void $init() {
System.out.println("无参构造函数被 mock 了");
}
@Mock
public void $clinit() {
System.out.println("静态代码块被 mock 了");
}
};
System.out.println("--- mock 之后 ---");
new Calculator();
}
}
执行结果:
--- mock 之前 ---
静态代码块初始化
无参构造函数初始化
--- mock 之后 ---
无参构造函数被 mock 了
为什么 mock 之后,没有输出 静态代码块被 mock 了
?因为类的静态代码块只会执行一次。
将 mock 之前的新建对象注释掉:
package demo;
import mockit.Mock;
import mockit.MockUp;
import org.junit.Test;
public class CalculatorTest {
@Test
public void test_add_01() {
// System.out.println("--- mock 之前 ---");
// new Calculator();
// mock
new MockUp<Calculator>() {
@Mock
public void $init() {
System.out.println("无参构造函数被 mock 了");
}
@Mock
public void $clinit() {
System.out.println("静态代码块被 mock 了");
}
};
System.out.println("--- mock 之后 ---");
new Calculator();
}
}
执行结果:
--- mock 之后 ---
静态代码块被 mock 了
无参构造函数被 mock 了