В тестируемом действии отсутствует типовой бин типа для бина
Я работаю над проектом Eclipse, используя Tomcat, Maven, Spring, Hibernate и Struts. У нас есть 2 приложения: ядро, содержащее все компоненты (сервисы) и сеть с представлениями действий и т. Д.
Я сделал тесты JUnit для сервисов и решил попробовать сделать некоторые тесты для действий. Вот пример того, что я пытаюсь сделать:
действие
@Action(value = "/modif/register")
@ResultPath("...")
public class A{
@Autowired
private ExampleService exampleService;
public String execute(){
Example = exampleService.find(...);
...
...
}
}
Тестовое задание
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Config.class)
public class ATest extends StrutsSpringTestCase {
@Before
public void setUp(){
try {
super.setUp();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testExecute() throws Exception{
request.setParameter(...);
//filling up the request
ActionProxy proxy = super.getActionProxy("/modif/register");
A register = (A) proxy.getAction();
String result = proxy.execute();
}
}
конфиг
@Configuration
@ComponentScan(basePackages = {"web","core"} )
public class Config {
//configuration
}
Каждый раз, когда я пытаюсь запустить этот тест, я получаю эту ошибку на линии ActionProxy proxy = super.getActionProxy("/modif/register");
org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'web.action.A': сбой внедрения зависимостей с автопроводкой; вложенным исключением является org.springframework.beans.factory.BeanCreationException: не удалось автоматически связать поле: public core.service.ExampleService web.action.A.exampleService; вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: не найден квалифицирующий компонент типа [core.service.ExampleService] для зависимости: ожидается, что по крайней мере 1 компонент, который квалифицируется как кандидат для автоматического подключения для этой зависимости. Аннотации зависимостей: {@org.springframework.beans.factory.annotation.Autowired(обязательно =true)}
Я получил эту ошибку независимо от того, какой бин я называю. Все они работают в основном приложении и в моем Action, я даже могу вызывать их напрямую в моем тесте без каких-либо ошибок, но каждый раз, когда я пытаюсь запустить тест, происходит сбой.
Кто-нибудь знает, что может выкинуть это исключение?
1 ответ
BeanCreationException
брошен потому что нет ExampleService
боб в вашем тестовом контексте. Это может произойти из-за того, что для теста вашего действия не загружен нужный контекст.
Поскольку вы используете JUnit 4, а не StrutsSpringTestCase
Вы должны продлить StrutsSpringJUnit4TestCase
класс, который будет играть лучше @RunWith(SpringJUnit4ClassRunner.class)
и контекстная загрузка.