Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUNIT自动连线实例始终为空_Java_Spring_Junit_Mockito - Fatal编程技术网

Java JUNIT自动连线实例始终为空

Java JUNIT自动连线实例始终为空,java,spring,junit,mockito,Java,Spring,Junit,Mockito,我正在尝试为下面的类编写测试用例,其中每次myConfig实例都是空的。是否有任何方法可以传递autowired实例 public class MyClass { @Autowired MyConfig myConfig ; public Properties getUnAckMessage(String queueName) { Properties prop=new Properties() URL url = new URL(StringUtils.join(

我正在尝试为下面的类编写测试用例,其中每次myConfig实例都是空的。是否有任何方法可以传递autowired实例

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

如果希望Spring自动连线,则必须为测试激活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");
      } 
    }

如果希望Spring自动连线,则必须为测试激活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");
      } 
    }

我得到以下异常org.springframework.beans.factory.unsatifiedpendencyException:创建名为“com.test.MyClassTest”的bean时出错:通过字段“myConfigReader”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.test.reader.MyConfigReader”类型的合格bean可用:至少需要1个符合autowire候选条件的bean。依赖项注释:此异常声明MyConfigReader类型的bean不能自动连接。确保使用“@Service”“@Component”或类似注释对该类进行注释,以便spring能够创建实例。该类存在于该类中,但仍然会出现异常,顺便说一句,它被MyClass使用,但在测试类中情况不同,并且可以使用Mockito。是,您可以将mockito与'@Mock'和'@InjectMocks'一起使用。检查编辑的帖子。我得到以下异常org.springframework.beans.factory.unsatifiedpendencyException:创建名为“com.test.MyClassTest”的bean时出错:通过字段“myConfigReader”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.test.reader.MyConfigReader”类型的合格bean可用:至少需要1个符合autowire候选条件的bean。依赖项注释:此异常声明MyConfigReader类型的bean不能自动连接。确保使用“@Service”“@Component”或类似注释对该类进行注释,以便spring能够创建实例。该类存在于该类中,但仍然会出现异常,顺便说一句,它被MyClass使用,但在测试类中情况不同,并且可以使用Mockito。是,您可以将mockito与'@Mock'和'@InjectMocks'一起使用。检查我的帖子。