如何使用 JUnit 测试旧的 Spring 2.0.7 应用程序?

How can I test an old Spring 2.0.7 application with JUnit?

我有一个旧应用程序是用 Spring 的旧版本构建的:2.0.7。我的任务是为这个应用程序添加新功能,所以我也需要编写一些 JUnit 测试。

到目前为止,我已经为我的服务编写了模型 类,并且在 src/test/resources/ 下放置了一个 applicationContext-test.xml 文件。通常,下一步是像这样编写我的测试用例:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/applicationContext-test.xml"})
public class MyTestCase {
    ...
}

但正如我所读,the Spring TestContext Framework was first introduced 在 Spring 2.5 中,因此我无法使用它。

有没有其他方法可以在 JUnit 中加载 applicationContext.xml 文件,并访问该 XML 文件中定义的 bean?

因为我已经有了模型并且它们不需要初始化参数,所以我可以将它们实例化并将它们传递给 setter,也许使用 @BeforeClass 注释。但如果可能的话,我更愿意使用 Spring 上下文,因为我最终得到了 并且它也应该被测试......

我结束了 ApplicationContext 包装器的编写,并使用 @Before 注释自己调用了 init 方法,而不是依赖 Spring 来执行此操作。这样,我可以测试我的初始化方法 ,就好像它是从 Spring.

调用的一样
public class ApplicationContextMock implements ApplicationContext {
    private Map<String, Object> beans;

    public ApplicationContextMock() {
        beans = new HashMap<String, Object>();
        beans.put("child1", new SomeServiceMock());
        beans.put("child2", new AnotherServiceMock());
    }

    public Object getBean(String arg0) throws BeansException {
        return beans.get(arg0);
    }
    // ...
}
@RunWith(JUnit4.class)
public class MyTestCase {
    MyClass foo;

    @Before
    public void init() {
        foo = new MyClass();
        foo.loadChildren(new ApplicationContextMock());
    }

    // ...
}

(我仍然想知道是否有更好的方法,没有 Spring 2.5+ 注释)。