Экземпляр JUNIT Autowired всегда пуст - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь написать контрольный пример для приведенного ниже класса, в котором каждый раз экземпляр myConfig имеет значение null. Есть ли способ передать экземпляр с автоматической проводкой.

public class MyClass {

@Autowired
MyConfig myConfig ;

public Properties getUnAckMessage(String queueName) {
    Properties prop=new Properties() 
        URL url = new URL(StringUtils.join(myConfig.getQueueHost(),
                    myConfig.getQueueURL(),myConfig.getQueueVm(),queueName));

    return prop;            
    }

public  Properties request(String queue) {           
        return getUnAckMessage(queue);
    }
}

public class Main {

  public void method() {
  MyClass myClass=new MyClass();
  myClass.getUnAckMessage("test");
  }
 }

Контрольный пример

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {

 @MockBean
MyConfig myConfigReader;




@Test
    public void testMyClass() {      
        MyClass  propertiesExchangeManager1 = new MyClass ();
        propertiesExchangeManager1.request("test");
      } 
    }

1 Ответ

2 голосов
/ 04 ноября 2019

Вы должны активировать Spring для своего теста, если вы хотите, чтобы пружина автоматически подключалась. Например:

@RunWith(SpringRunner.class)
public class Test {

    @Autowired private MyClass myClass

    @Test
    public void test() {
        ///...
    }
}

РЕДАКТИРОВАТЬ: Если вы создаете экземпляр класса MyClass самостоятельно, Spring не может внедрить необходимые классы. Вы должны изменить свой тест следующим образом:

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {

 @MockBean
MyConfig myConfigReader;

@Autowired
MyClass propertiesExchangeManager1;


@Test
    public void testMyClass() {      
        propertiesExchangeManager1.request("test");
      } 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...