使用 EasyMock 模拟接受参数的接口
Using EasyMock to mock an interface that accepts arguments
我有一个 class MyClass
,其中包含调用接口 MyInterface
的构造函数。 MyInterface
包含接受 Int
和 String
.
的方法 validator
我需要使用 EasyMock 在 JUnit 测试中模拟来自 MyInterface.validator
的 return Boolean
值。
我在这方面做了几次尝试,当我尝试从 MyClass
调用 MyInterface.validator
时,我只得到 Java 异常。
public class MyClass {
public MyInterface myInterface;
public int test;
public MyClass (int INT, String STRING, MyInterface myInterface) {
this.myInterface = myInterface;
this.test = INT;
myInterface.validator(INT, STRING);
}
}
public interface MyInterface {
public Boolean validator(int INT, String STRING);
}
public class MyClassTest {
MyInterface mockMyInterface;
MyClass myClass;
@Before
public void setUp() throws Exception {
mockMyInterface = createMock(MyInterface.class);
}
@Test
public void test() {
myClass = new MyClass(10, "Test", mockMyInterface);
expect(mockMyInterface.validator(10, "Test")).andStubReturn(true);
replay(mockMyInterface);
assertEquals(myClass.test, 10);
verify(mockMyInterface);
}
}
您必须在使用前配置模拟期望。您的构造函数调用模拟,因此您应该在创建 MyClass 的实例之前配置它。
试试这个:
public class MyClassTest {
MyInterface mockMyInterface;
MyClass myClass;
@Before
public void setUp() throws Exception {
mockMyInterface = createMock(MyInterface.class);
}
@Test
public void test() {
expect(mockMyInterface.validator(10, "Test")).andStubReturn(true);
replay(mockMyInterface);
myClass = new MyClass(10, "Test", mockMyInterface);
assertEquals(myClass.test, 10);
verify(mockMyInterface);
}
}
我有一个 class MyClass
,其中包含调用接口 MyInterface
的构造函数。 MyInterface
包含接受 Int
和 String
.
validator
我需要使用 EasyMock 在 JUnit 测试中模拟来自 MyInterface.validator
的 return Boolean
值。
我在这方面做了几次尝试,当我尝试从 MyClass
调用 MyInterface.validator
时,我只得到 Java 异常。
public class MyClass {
public MyInterface myInterface;
public int test;
public MyClass (int INT, String STRING, MyInterface myInterface) {
this.myInterface = myInterface;
this.test = INT;
myInterface.validator(INT, STRING);
}
}
public interface MyInterface {
public Boolean validator(int INT, String STRING);
}
public class MyClassTest {
MyInterface mockMyInterface;
MyClass myClass;
@Before
public void setUp() throws Exception {
mockMyInterface = createMock(MyInterface.class);
}
@Test
public void test() {
myClass = new MyClass(10, "Test", mockMyInterface);
expect(mockMyInterface.validator(10, "Test")).andStubReturn(true);
replay(mockMyInterface);
assertEquals(myClass.test, 10);
verify(mockMyInterface);
}
}
您必须在使用前配置模拟期望。您的构造函数调用模拟,因此您应该在创建 MyClass 的实例之前配置它。
试试这个:
public class MyClassTest {
MyInterface mockMyInterface;
MyClass myClass;
@Before
public void setUp() throws Exception {
mockMyInterface = createMock(MyInterface.class);
}
@Test
public void test() {
expect(mockMyInterface.validator(10, "Test")).andStubReturn(true);
replay(mockMyInterface);
myClass = new MyClass(10, "Test", mockMyInterface);
assertEquals(myClass.test, 10);
verify(mockMyInterface);
}
}