如何使用 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+ 注释)。
我有一个旧应用程序是用 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+ 注释)。