我正在尝试为下面的类编写测试用例,其中每次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");
}
}
答案 0 :(得分:2)
如果要使弹簧自动接线,则必须激活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");
}
}