Где создать экземпляр context.xml в тестовой среде

1

Мы используем Spring Framework (XML Version) 4.0.5.RELAESE в нашем проекте Java. В нашем приложении context.xml создается в начале запуска приложения и предоставляет все свойства через dependecy injection.

Теперь мне интересно, какая лучшая (и обычно используемая) стратегия для того, чтобы создать экземпляр в тестовой среде. (У нас есть тесты Unit, Integration и System, которые, по крайней мере, нуждаются в компоненте databaseBaseConnector, предоставляемом в контексте.xml,)

Я думал о создании абстрактного класса, из которого каждый тест простирается, но в этом случае он будет вновь создан для каждого теста. Я хотел бы иметь решение, аналогичное главному приложению, где контекст создается только один раз, а все остальное необходимо установить через инъекцию зависимости.

Исследование этой темы еще не помогло, поэтому я решил задать вопрос.

  • 1
    Spring предоставляет интегрированную среду SpringJUnit4ClassRunner для junit. Вам просто нужно настроить контекст приложения непосредственно в самом junit. Вы можете взглянуть на это для более подробной информации
Теги:
unit-testing
spring
testing

1 ответ

1
Лучший ответ

Spring поставляется с SpringJUnit4ClassRunner и @ContextConfiguration -annotation. Если вы используете их, то весна будет использовать один и тот же контекст Spring в разных тестах.

Таким образом, тестовый класс Spring может выглядеть так:

package com.queomedia;

import javax.annotation.Resource;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringJUnit4ClassRunner.class)
//@Transactional
@ContextConfiguration(SpringTestContext.APPLICATION)
public class SpringContextTest {

    @Autowire
    private ApplicationContext applicationContext;

    //Test that the spring context can been loaded
    @Test
    public void testSpringContextLoad() {
        Assert.assertNotNull("application context expected", this.applicationContext);
    }
}
  • 0
    Вы, вероятно, имели в виду «@Autowired», также у вас есть идея, почему я не могу разрешить SpringTestContext?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню