【问题标题】:how to use Mockito or PowerMock to set a private field in a class如何使用 Mockito 或 PowerMock 在类中设置私有字段
【发布时间】:2020-05-30 18:20:10
【问题描述】:

我有以下代码

@RunWith(PowerMockRunner.class)
public NeedToTestClass () {
     private String needToSetValueField;

     ......

     public String needToTestMethod() {
           return "the field value is " + this.needToSetValueField;
     } 
}

当我尝试测试该方法时,我是否可以设置(或模拟)needToSetValueField?请帮忙。谢谢。

【问题讨论】:

  • 你不应该。私有成员不是类合同的一部分。如果您能解释这个私有字段的目的是什么,我们或许可以提出一些更简洁的替代方案。
  • @chrylis,感谢您的回复。这个私有字段值应该在类被实例化并在不同地方使用时计算一次。
  • 使用反射 API。示例:stackoverflow.com/questions/32716952/…
  • 不,我不能 - StackOverflow 认为它微不足道,并自动将其转换为评论。对不起。

标签: java mockito powermock


【解决方案1】:

@Taschi 应该得到赞誉。可以使用简单的反射在类中设置私有变量。在单元测试中可以做的是使用spy注解模拟类NeedToTestClass,然后使用反射设置私有变量needToSetValueField。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    相关资源
    最近更新 更多