Невозможно использовать пружинное внедрение зависимостей между различными классами для 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/>

Надеюсь, поможет!

Другие вопросы по тегам