当前位置: 首页 > 面试题库 >

在测试过程中注入@Autowired私有字段

潘国源
2023-03-14
问题内容

我有一个组件安装程序,它实际上是一个应用程序的启动器。它的配置如下:

@Component
public class MyLauncher {
    @Autowired
    MyService myService;

    //other methods
}

MyService带有@ServiceSpring注释,并自动连接到我的启动器类中,没有任何问题。

我想为MyLauncher编写一些jUnit测试用例,为此,我启动了一个这样的类:

public class MyLauncherTest
    private MyLauncher myLauncher = new MyLauncher();

    @Test
    public void someTest() {

    }
}

我可以为MyService创建一个Mock对象,然后将其注入测试类中的myLauncher吗?由于Spring正在处理自动装配,因此我目前在myLauncher中没有吸气剂或吸气剂。如果可能的话,我不想添加getter和setter。我可以告诉测试用例使用@Beforeinit方法将模拟对象注入自动接线的变量中吗?

如果我要彻底解决这个问题,请随意说。我还是这个新手。我的主要目标是只具有一些Java代码或注释,即可将模拟对象放入该@Autowired变量中,而无需编写setter方法或使用applicationContext- test.xml文件。我宁愿在.java文件中维护测试用例的所有内容,而不必只为测试维护单独的应用程序内容。

我希望将 Mockito
用于模拟对象。过去,我是通过使用org.mockito.Mockito和创建对象来完成此操作的Mockito.mock(MyClass.class)


问题答案:

您可以在测试中绝对在MyLauncher上注入模拟。我敢肯定,如果您显示您正在使用的模拟框架,将会很快提供答案。使用mockito,我会考虑使用@RunWith(MockitoJUnitRunner.class)并为myLauncher使用注释。它看起来像下面的样子。

@RunWith(MockitoJUnitRunner.class)
public class MyLauncherTest
    @InjectMocks
    private MyLauncher myLauncher = new MyLauncher();

    @Mock
    private MyService myService;

    @Test
    public void someTest() {

    }
}


 类似资料:
  • 我有一个组件设置,它本质上是应用程序的启动程序。其配置如下: MyService使用Spring注释进行注释,并且自动连接到我的launcher类中,没有任何问题。 我可以为MyService创建一个模拟对象并将其注入我的测试类中的myLauncher吗?我目前在myLauncher中没有getter或setter,因为Spring正在处理自动生成。如果可能的话,我希望不必添加getter和set

  • 问题内容: 我正在使用Mockito 和批注将依赖项注入到使用Spring批注的私有字段中: 和 现在,我还要将 真实 对象注入私有字段(不使用setter)。这是否可能,或者该机制仅限于注入Mocks? 问题答案: 使用注释 Mockito将把具有或批注的所有字段视为要注入到带有批注的实例中的潜在候选对象。在上述情况下,实例将被注入到“演示”中 有关更多详细信息,请参阅 样板房 @间谍 @嘲笑

  • 我想在Spring中测试注入依赖关系。 我想要一个这样的测试: 我尝试过使用ContextConfiguration和一个测试配置文件,但是测试失败了,我不想在测试中使用@autowired,我想创建我的类的一个实例,并且bean是自动autowired的。

  • 当我测试我的Spring boot服务时,我不知道如何注入一个@Autowired bean。 My bean(Spring填充@Value fromapplication.yml): 我的 api: 这很好,int值是正确的。这是我的测试: 在这个测试评论中,我如何通过@Autowired进入ListenerApi? 谢谢。

  • 我有一个Spring Boot应用程序和服务,里面有私有的道场。私有DAO属性使用进行注释(没有设置器或构造器设置它,只有注释)。我试图为服务编写Spock测试,但找不到如何将模拟DAO注入变量。

  • 问题内容: 我的测试课: 我在行上得到一个空指针异常: 在精确的给出空指针异常 如何使Junit类中的beanObject字段自动装配成为可能,以便可以使用“ BeanClass”类中的方法? 从评论中复制: 用简单的术语来说.. beanClass是具有某些方法的接口..我用 注释标记了该beanClass。.banClass 是由具有方法实现的beanClassImpl类实现的。.我需要在我的