方式1:MockUp 的 getMockInstance 方法
package demo;
public interface IPerson {
String getName();
int getAge();
}
package demo;
import mockit.Mock;
import mockit.MockUp;
import org.junit.Test;
public class IPersonTest {
@Test
public void test() {
MockUp<IPerson> mock = new MockUp<IPerson>() {
@Mock
public String getName() {
return "xiaoming";
}
@Mock
public int getAge() {
return 18;
}
};
IPerson person = mock.getMockInstance();
System.out.println(person.getName());
}
}
MockUp 的 getMockInstance 方法在 Version 1.39 中被移除了(参考 https://jmockit.github.io/changes.html)。替换方案是,实现接口的一个空类,mock 空类,将其注入到需要使用的地方。
方式2:实现接口具体类,然后 mock
增加一个实现类:
package demo;
public class XiaoMing implements IPerson {
@Override
public String getName() {
return "XiaoMing";
}
@Override
public int getAge() {
return 18;
}
}
单测示例:
package demo;
import mockit.Expectations;
import org.junit.Test;
public class IPersonTest {
@Test
public void test() {
IPerson person = new XiaoMing();
new Expectations(person) {{
person.getName(); result = "被mock了";
}};
System.out.println(person.getName());
}
}
执行结果:
被mock了
方式3:Mocked + Expectations
用下面的方式:
package demo;
import mockit.Expectations;
import mockit.Mocked;
import org.junit.Test;
public class IPersonTest {
@Test
public void test(@Mocked IPerson person) {
new Expectations() {{
person.getName(); result = "xiaoming";
}};
System.out.println(person.getName());
}
}
执行结果:
xiaoming