- 关键词:mock 常量的mock
- 源类清单
public
static
class
ClassWithConstant {
private
static
final
Integer ANSWER =
42
;
public
static
final
int
getAnswer() {
return
ANSWER;
}
}
- 单元测试类清单
public
class
ClassWithConstantTest {
@Test
public
void
test() {
killThreadLocal(ClassWithConstant.
class
.getName(),
"ANSWER"
);
Deencapsulation.setField(ClassWithConstant.
class
,
43
);
assertEquals(
43
,
new
ClassWithConstant().getAnswer());
}
//use reflection to remove the final modifier first
private
void
killThreadLocal(String klazzName, String fieldName) {
try
{
Field field = Class.forName(klazzName).getDeclaredField(fieldName);
field.setAccessible(
true
);
Field modifiersField = Field.
class
.getDeclaredField(
"modifiers"
);
modifiersField.setAccessible(
true
);
int
modifiers = modifiersField.getInt(field);
modifiers &= ~Modifier.FINAL;
modifiersField.setInt(field, modifiers);
field.set(
null
,
null
);
}
catch
(Exception e){
}
}
}
JMockit使用实例<四>mock某个类的常量值
最新推荐文章于 2024-05-16 04:10:56 发布