当前位置: 首页 > 知识库问答 >
问题:

嵌套的自动连接依赖项未在JUnit中注入

何浩荡
2023-03-14

下面是演示该问题的代码。Class3具有Class2的自动生成字段,Class2具有Class1的自动生成依赖项,简单测试使用Class3获取Class1的String值。因此,在测试执行中,Class2不是空的,并被注入到Class3中,但是Class2中的Class1是空的。

@Component
 class Class1{
 private String str= "Some String";
 //getter setter
}

@Component
class Class2{

@Autowired
Class1 class1;
//getter setter
}

@Component
class Class3{

@Autowired
Class2 class2;
 //getter setter
}

public class TestClass{

@InjectMocks
Class3 class3;

@Spy
Class2 class2;

@Spy
Class1 class2;

    @Test
    public void simpleTest(){
    
    String s = class3.class2.class1.getStr();
    Assert.equals(s,"Some String");
    
    }
}

共有1个答案

於鸿羲
2023-03-14

这是因为您在Class2上添加了@Spy注释,它使Class2成为一个mock而不是一个有效的springbean。

如果您想在这里获得Spring的DI,您必须使用@Autowired和place获取bean

@RunWith(SpringRunner.class)
@SpringBootTest

在您的测试中使用实际上下文。

 类似资料:
  • 问题内容: 我正在开发一个小型Java EE Hibernate Spring应用程序,出现错误: 这是我的控制器ArticleControleur,其中包含用于恢复文章列表的功能: 这是我的articleService: 这是我的应用程序上下文: 问题答案: 该错误表明不是注册的Bean。添加其中包含将在你的应用程序上下文中自动装配的bean的软件包: 或者,如果你想将所有子包包括在com.bd

  • 大家好,我收到下一个错误,我是使用Hibernate的新手

  • 这是我的当前设置:ProjectRepo: ProjectService: ProjectRestController:

  • 在下面这样一个简单的测试类中: AddressInfoLocalizer(很抱歉这个奇怪的名字,但我不得不虚构)基本上是这样的: 当调用(在测试中)addressInfoLocalizer时,我不断得到一个NullPointerException。本地化(ip) , 在调试时,我实际上可以看到addressInfoLocalizer对象是null。 我用同样的方法创建了其他类,但只有这个类似乎有这

  • 问题内容: 我测试了我的DAO,但是没有用。发生以下错误: 我的DAO: 我对此DAO的测试: 我的 applicationContext.xml : 我注意到,如果您在DAO中评论@Transactional,则将正确创建bean。怎么了? 问题答案: 首先,将以Controller结尾的名称给DAO确实很令人困惑,Controller和DAO共同具有不同的目的。 当您添加到服务或dao类时,为

  • 我有一个Spring Boot应用程序,它包含一个用户类——所有字段都有标准的JSR-303注释(@NotNull、@Size等),验证工作正常。 但是,当我向User添加自定义验证时,我无法将依赖项注入自定义验证器: @uniqueUsername注释声明为: 注释字段: 以及验证程序的用法: 问题是UserRepository在UniqueUsernameValidator中没有自动配置。字段