Невозможно использовать пружинное внедрение зависимостей между различными классами для TestNG с использованием Java-аннотаций (JSR 330 Standard Annotations)
У меня есть сервис, который я пытаюсь внедрить в различные классы в моих тестах, но я получаю его экземпляр как нулевой.
Мой конфиг интерфейс:
MyService.java
public interface MyService {
public String getHostUri();
}
Мой класс реализации этого интерфейса: MyServiceImpl.java
public class MyServiceImpl implements MyService {
private static final String BASE_HOST_URI_CONFIG = "localhost:4444";
@Override
public String getHostUri() {
return BASE_HOST_URI_CONFIG;
}
Мой класс конфигурации Spring с bean-компонентом:
@Configuration
public class AutomationSpringConfig {
@Bean
public MyService getMyService(){
return new MyServiceImpl();
}
}
Мой класс testNG:
@ContextConfiguration(classes=AutomationSpringConfig.class ,loader =AnnotationConfigContextLoader.class)
public class BasicAutomatedTest extends AbstractTestNGSpringContextTests {
private static final Logger LOGGER = Logger.getLogger(BasicAutomatedTest.class);
@Inject
private MyService myService;
@Test
public void basicTest {
Setup setup = new Setup();
LOGGER.info(myService.getHostUri());
LOGGER.info(setup.myService.getHostUri());
}
}
Мой вспомогательный класс, в котором я не могу получить инъекцию:
public class Setup {
@Inject
public MyService myService;
}
Поэтому, когда я пытаюсь получить hostUri через объект установки в методе basicTest BasicAutomatedTest, я получаю исключение NullPointerException. Поэтому я не могу внедрить bean-компонент MyService в класс Setup.
1 ответ
Чтобы использовать аннотации, вам нужно указать это поведение в вашем XML-файле конфигурации beans. Что-то вроде этого:
<context:component-scan base-package="your.base.package"/>
<context:annotation-config/>
Надеюсь, поможет!