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

mockito:将类mock注入私有接口字段

夏涵畅
2023-03-14
@Component
public class Service {

    @Autowired 
    private iHelper helper;

    public void doSomething() {
        helper.helpMeOut();
    }
}
@RunWith(MockitoJUnitRunner.class)
public class ServiceTest {

    @Mock
    private iHelper helper;

    @InjectMocks
    private Service service;

    @Before
    public void setup() {
        service = new Service();
    }

    @Test
    public void testStuff() {
        doNothing().when(helper).helpMeOut();
        service.doSomething();
    }
}

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

共有1个答案

陈嘉荣
2023-03-14

@ACDCJunior的评论帮我弄明白了问题所在。使用new关键字实例化service导致Spring无法正确注入依赖项(在本例中为helper)。我在测试中通过自动服务修复了这个问题。我的最终工作代码如下所示:

我正在测试的类

@Component
public class Service {

    @Autowired 
    private iHelper helper;

    public void doSomething() {
        helper.helpMeOut();
    }
}

我对这门课的测试

@RunWith(MockitoJUnitRunner.class)
public class ServiceTest {

    @Mock
    private iHelper helper;

    @InjectMocks
    @Autowired
    private Service service;

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

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

  • 我是JUnit和Mockito的新手,我想在我的DAO测试课中模拟我的SessionFactory,这就是我继续的方式: 这是我的刀类 但是当我运行我的测试时,我有一个< code > Java . lang . NullPointerException 异常,nullPointerException在< code > todos = session factory . getcurrentses

  • 我在一个带有Spring和Struts的Java项目中使用Mockito,在测试操作方面遇到了问题。 我没有使用Struts2 jUnit插件来节省使用这种方法进行测试的时间:Strut2.3.1.2Unit test,如何使用getContext()删除Spring依赖关系vs NPE。 问题是在我的操作中,当调用getText()时,我有一个NullPointerException。 我试图窥

  • 我试图用Mockito mock对象替换对象。通常的方法是使用Springockito使用xml: 目前,我正在尝试使用Spring的JavaConfig来完成这项工作。突然之间,Java表达式比xml要详细得多: 我发现了一个名为Springockito annotations的库,它允许您执行以下操作: 显然,更漂亮:)唯一的问题是,这个上下文加载器不允许我对其他bean使用和JavaConf

  • 我有一个包含三个命名的@resource成员的类,如下所示: 从1.8.5升级到Mockito 1.9.5后,测试开始失败。测试套件仅模拟了一次PaginationRequestValidator,如下所示: 这导致只有三个实例中的第三个被注入,如下sysout所示: 显然,两个版本之间的行为发生了变化。我假设旧版本将mock注入到所有三个字段中--这对我来说仍然是一个可以接受的解决方案。 作为一