【问题标题】:mocking superclass protected variable using jmockit使用 jmockit 模拟超类受保护变量
【发布时间】:2010-09-30 19:14:09
【问题描述】:

我无法模拟超类中定义的受保护变量。我可以模拟超类中的受保护方法,但无法将受保护变量模拟到子类中,其中正在为子类编写测试用例,请如果有人出来有什么解决办法,请回复。

谢谢 沙市

【问题讨论】:

    标签: variables for-loop protected jmockit


    【解决方案1】:

    所有模拟工具只模拟方法。

    JMockit 还具有实用方法,可提供对给定测试中不可访问的字段、方法和构造函数的访问。它们可直接用于mockit.Expectationsmockit.Verifications 的子类。静态mockit.Deencapsulation 类中也公开了相同的方法。

    【讨论】:

      【解决方案2】:

      您可以使用Deencapsulation.setField 方法执行此操作。例如:

      @Test public void staticVarOverride() {
          MyClass myClass = new MyClass();
          Deencapsulation.setField(MyClass.class, "myStatic", 2);
          // Assertions, verifications go here.
      }
      

      这会将静态变量myStatic 的值设置为2。请注意,虽然这适用于静态,但不适用于静态决赛。 AFAIK 没有办法覆盖静态决赛。

      【讨论】:

        猜你喜欢
        • 2022-11-09
        • 2021-11-16
        • 2014-05-14
        • 2018-10-12
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多