Как я могу протестировать старое приложение Spring 2.0.7 с помощью JUnit?
У меня есть старое приложение, созданное с помощью древней версии Spring: 2.0.7. Мне было поручено добавить новые функции в это приложение, поэтому я также должен написать несколько тестов JUnit.
До сих пор я написал макеты классов для своих услуг, и applicationContext-test.xml
файл помещен под src/test/resources/
, Как правило, следующим шагом будет написать мой тестовый пример следующим образом:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/applicationContext-test.xml"})
public class MyTestCase {
...
}
Но, как я прочитал, Spring TestContext Framework был впервые представлен в Spring 2.5, и поэтому он мне недоступен.
Есть ли другой способ, которым я могу загрузить файл applicationContext.xml в JUnit и получить доступ к bean-компонентам, определенным в этом XML-файле?
Поскольку у меня уже есть макеты, и они не требуют параметров инициализации, я мог бы просто создать их экземпляр и передать их установщику, возможно, используя @BeforeClass
аннотаций. Но я бы предпочел использовать контекст Spring, если это возможно, учитывая, что у меня появился какой- то необычный способ загрузки bean-компонентов, и его тоже нужно протестировать...
1 ответ
Я закончил писать обертку ApplicationContext и вызывал init
метод себя с @Before
аннотации, вместо того чтобы полагаться на 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+).