春季进行模拟课程注射无法正常工作

时间:2019-03-04 15:02:57

标签: java unit-testing junit

我最近开始编写需要模拟方法和数据的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");
    }
}

0 个答案:

没有答案