Reputation: 914
I am trying to write test case for the below class where everytime myConfig instance is coming as null. Is there any way to pass the autowired instance.
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");
}
}
Test case
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
@MockBean
MyConfig myConfigReader;
@Test
public void testMyClass() {
MyClass propertiesExchangeManager1 = new MyClass ();
propertiesExchangeManager1.request("test");
}
}
Upvotes: 0
Views: 722
Reputation: 3805
You must activate Spring for your test if you want Spring to autowire. For example:
@RunWith(SpringRunner.class)
public class Test {
@Autowired private MyClass myClass
@Test
public void test() {
///...
}
}
If you instantiate the class MyClass by yourself, Spring cannot inject the needed classes. You should modify your test like this:
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
@MockBean
MyConfig myConfigReader;
@Autowired
MyClass propertiesExchangeManager1;
@Test
public void testMyClass() {
propertiesExchangeManager1.request("test");
}
}
Upvotes: 4