Java 使继承的getter返回模拟对象
我希望类A中继承的getter返回MyObject的Mock。如果不直接将getMyObject()方法存根到中(即通过使用一些MockBase类),我如何做到这一点Java 使继承的getter返回模拟对象,java,unit-testing,testng,mockito,Java,Unit Testing,Testng,Mockito,我希望类A中继承的getter返回MyObject的Mock。如果不直接将getMyObject()方法存根到中(即通过使用一些MockBase类),我如何做到这一点 有什么问题吗?它正在按预期工作,也许您正在使用旧版本的Mockito。例如,版本1.9.5: 以下是要测试的类的父级: public class Base { private BaseObjectDependency base_object_dependency; public BaseObjectDepende
有什么问题吗?它正在按预期工作,也许您正在使用旧版本的Mockito。例如,版本1.9.5: 以下是要测试的类的父级:
public class Base {
private BaseObjectDependency base_object_dependency;
public BaseObjectDependency getBase_object_dependency() {
return base_object_dependency;
}
}
public class Child extends Base {
private ChildObjectDependency child_object_dependency;
public void myMethod() {
BaseObjectDependency obj = getBase_object_dependency();
//do something here
}
public ChildObjectDependency getChild_object_dependency() {
return child_object_dependency;
}
}
以下是您要测试的类:
public class Base {
private BaseObjectDependency base_object_dependency;
public BaseObjectDependency getBase_object_dependency() {
return base_object_dependency;
}
}
public class Child extends Base {
private ChildObjectDependency child_object_dependency;
public void myMethod() {
BaseObjectDependency obj = getBase_object_dependency();
//do something here
}
public ChildObjectDependency getChild_object_dependency() {
return child_object_dependency;
}
}
以下是依赖项:
public class BaseObjectDependency { }
public class ChildObjectDependency { }
下面是测试的父类:
import org.mockito.Mock;
public class MockBase {
@Mock protected BaseObjectDependency base_test_dependency_mock;
}
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
public class ChildTest extends MockBase {
@InjectMocks private Child child;
@Mock private ChildObjectDependency child_test_dependency_mock;
@BeforeClass
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void check_that_mocks_are_correctly_injected() {
assertNotNull(child.getBase_object_dependency());
assertEquals(base_test_dependency_mock, child.getBase_object_dependency());
assertNotNull(child.getChild_object_dependency());
assertEquals(child_test_dependency_mock, child.getChild_object_dependency());
}
}
最后是测试:
import org.mockito.Mock;
public class MockBase {
@Mock protected BaseObjectDependency base_test_dependency_mock;
}
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
public class ChildTest extends MockBase {
@InjectMocks private Child child;
@Mock private ChildObjectDependency child_test_dependency_mock;
@BeforeClass
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void check_that_mocks_are_correctly_injected() {
assertNotNull(child.getBase_object_dependency());
assertEquals(base_test_dependency_mock, child.getBase_object_dependency());
assertNotNull(child.getChild_object_dependency());
assertEquals(child_test_dependency_mock, child.getChild_object_dependency());
}
}
您将看到,我在任何地方都没有存根getBase\u object\u dependency()