加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Mockito:模拟私有字段初始化

发布时间:2020-12-15 07:38:53 所属栏目:Java 来源:网络整理
导读:我如何模拟正在内联初始化的字段变量? 例如 class Test { private Person person = new Person(); ... public void testMethod() { person.someMethod(); ... }} 在这里,我想在测试方法时测试person.someMethod() – Test#testMethod. 我需要模拟person变量
我如何模拟正在内联初始化的字段变量?

例如

class Test {
    private Person person = new Person();
    ...
    public void testMethod() {
        person.someMethod();
        ...
    }
}

在这里,我想在测试方法时测试person.someMethod() – Test#testMethod.

我需要模拟person变量的初始化.任何线索?

编辑:我不允许修改Person类.

解决方法

Mockito附带一个助手类来为您节省一些反射锅炉板代码:

import org.mockito.internal.util.reflection.Whitebox;

//...

@Mock
private Person mockedPerson;
private Test underTest;

// ...

@Test
public void testMethod() {
    Whitebox.setInternalState(underTest,"person",mockedPerson);
    // ...
}

更新:
不幸的是,模拟团队决定在Mockito 2中使用remove the class.所以你回来编写自己的反射样板代码,使用另一个库(例如Apache Commons Lang),或者简单地盗窃Whitebox类(它是MIT licensed).

更新2:
JUnit 5附带了自己的ReflectionSupport和AnnotationSupport类,这些类可能很有用,可以避免您拉入另一个库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读