我最近开始编写需要模拟方法和数据的JUnit。我能够在另一个班级上做到这一点,但它确实有效,但不确定为什么它不适用于我正在测试的当前班级。
基本上我想做的是。 1.为需要模拟数据的类/方法创建一个模拟类。 2.通过context.xml将其注入到我正在测试的类中 3.当我正在测试的类中调用该方法时,它应该是被覆盖的方法
public abstract class Service {
public string methodA(String x, String y, String z) {
return x;
}
}
。
public class SchoolService extends Service{
public String methodB(String input) {
String data = methodA("Test", "Test", "Test");
return data;
}
}
。
public class MockService extends SchoolService{
@Override
public String methodA(String x, String y, String z) {
return "OVERRIDE";
}
}
。
context.xml
<bean id="SchoolService" class="com.xxx.xxxx.xxx.SchoolService" scope="prototype">
<property name="SchoolService" ref="MockService"/>
</bean>
<bean id="MockService" class="com.xxx.xxxx.xxx.MockService"/>
如果这按我的预期工作,则在MethodB内部调用methodA时,应返回“ OVERRIDE”而不是x。
我用与其他类相同的方式编写了这个JUnit,但是以某种方式却不能以相同的方式工作。我怀疑它是超类方法,但不确定如何解决。
编辑:添加我的测试班
public class SchoolServiceTest {
SchoolService ss;
@Test
public string testSchoolService() {
return ss.methodB("Test");
}
}