【发布时间】:2010-09-30 19:14:09
【问题描述】:
我无法模拟超类中定义的受保护变量。我可以模拟超类中的受保护方法,但无法将受保护变量模拟到子类中,其中正在为子类编写测试用例,请如果有人出来有什么解决办法,请回复。
谢谢 沙市
【问题讨论】:
标签: variables for-loop protected jmockit
我无法模拟超类中定义的受保护变量。我可以模拟超类中的受保护方法,但无法将受保护变量模拟到子类中,其中正在为子类编写测试用例,请如果有人出来有什么解决办法,请回复。
谢谢 沙市
【问题讨论】:
标签: variables for-loop protected jmockit
所有模拟工具只模拟方法。
JMockit 还具有实用方法,可提供对给定测试中不可访问的字段、方法和构造函数的访问。它们可直接用于mockit.Expectations 和mockit.Verifications 的子类。静态mockit.Deencapsulation 类中也公开了相同的方法。
【讨论】:
您可以使用Deencapsulation.setField 方法执行此操作。例如:
@Test public void staticVarOverride() {
MyClass myClass = new MyClass();
Deencapsulation.setField(MyClass.class, "myStatic", 2);
// Assertions, verifications go here.
}
这会将静态变量myStatic 的值设置为2。请注意,虽然这适用于静态,但不适用于静态决赛。 AFAIK 没有办法覆盖静态决赛。
【讨论】: