- 關鍵詞: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某個類的常量值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.