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

Mockito:将真实对象注入私有@Autowired字段

桓喜
2023-03-14
问题内容

我正在使用Mockito @Mock@InjectMocks批注将依赖项注入到使用Spring批注的私有字段中@Autowired

@RunWith(MockitoJUnitRunner.class)
public class DemoTest {
    @Mock
    private SomeService service;

    @InjectMocks
    private Demo demo;

    /* ... */
}

public class Demo {

    @Autowired
    private SomeService service;

    /* ... */
}

现在,我还要将 真实 对象注入私有@Autowired字段(不使用setter)。这是否可能,或者该机制仅限于注入Mocks?


问题答案:

使用@Spy注释

@RunWith(MockitoJUnitRunner.class)
public class DemoTest {
    @Spy
    private SomeService service = new RealServiceImpl();

    @InjectMocks
    private Demo demo;

    /* ... */
}

Mockito将把具有@Mock@Spy批注的所有字段视为要注入到带有@InjectMocks批注的实例中的潜在候选对象。在上述情况下,'RealServiceImpl'实例将被注入到“演示”中

有关更多详细信息,请参阅

样板房

@间谍

@嘲笑



 类似资料:
  • 有什么建议吗?我如何让Mockito正确地将一个mock注入到一个接口私有字段?

  • 我正在为一个具有2级依赖注入的类编写一个测试用例。我对1级依赖项注入对象使用@Spy注释,我想模拟第2级注入。但是,我在第二级上不断遇到空指针异常。有没有办法将模拟注入@Spy对象?

  • 问题内容: 我有一个组件安装程序,它实际上是一个应用程序的启动器。它的配置如下: MyService带有Spring注释,并自动连接到我的启动器类中,没有任何问题。 我想为MyLauncher编写一些jUnit测试用例,为此,我启动了一个这样的类: 我可以为MyService创建一个Mock对象,然后将其注入测试类中的myLauncher吗?由于Spring正在处理自动装配,因此我目前在myLau

  • 我有下课情节。在测试MyTestableClass时,我希望处理Autowired类。我只想模拟AutoWired类中的变量。 示例类如下- 例如,Console在返回true之前应该给我“inside Service class”。 提前道谢!

  • 问题内容: 我有一个类,该类具有一个命名的字段(它与我的类具有相同的类型并具有修饰符): 在该类中,我定义了一个名为的方法,该方法具有一个类型为type的参数。我想知道为什么我可以直接访问实例字段?我的意思是该字段是,不是通过实例受害者无法访问的吗? 问题答案: 隐私不是针对每个实例的,而是针对每个班级的。 该类可以访问所有实例的私有字段。 例如,该方法可以将o(如果适用)转换为相同类型,并将其私

  • 我目前正试图模拟类中的私有final static对象。我的目标似乎没有被恰当地模仿。 示例: 代码:在主类中 嘲笑:在我的测试课上,我有 但是obj不返回我在执行时指定的值 并将实际运行。 任何建议都将是有帮助的,我也不能改变Main类中的任何代码,谢谢。