JUNIT Autowired实例始终为null

时间:2019-11-04 11:17:59

标签: java spring junit mockito

我正在尝试为下面的类编写测试用例,其中每次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 个答案:

答案 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");
      } 
    }