public
class
ClassWithConstantTest {
@Test
public
void
test() {
killThreadLocal(ClassWithConstant.
class
.getName(),
"ANSWER"
);
Deencapsulation.setField(ClassWithConstant.
class
,
43
);
assertEquals(
43
,
new
ClassWithConstant().getAnswer());
}
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){
}
}
}