我的Spring Service中有一个private static final int LIMIT = 1000
。
我试图在我的测试用例中使用反射来覆盖LIMIT的值,但是它不起作用。我正在进行集成测试,因此无法使用Mockito或Mock。
Field maxFetchAllowed Manager.getClass().getDeclaredField("LIMIT");
maxFetchAllowed.setAccessible(true);
int modifiers = maxFetchAllowed.getModifiers();
Field modifierField = maxFetchAllowed.getClass().getDeclaredField("modifiers");
modifiers = modifiers & ~Modifier.FINAL;
modifierField.setAccessible(true);
modifierField.setInt(maxFetchAllowed, modifiers);
maxFetchAllowed.set(null, 100); //set the value correctly
System.out.println(maxFetchAllowed.get(null)); // shows 100
但是当我调用create方法进行测试时,它仍然有1000个
manager.create() // still has 1000