Tuesday, March 3, 2015

Java: Mocking a final static field

This is a way how to mock a final static field in Java:
 

    static void mockFinalStaticField(Field field, Object newValue) throws Exception {
        field.setAccessible(true);

        // remove final modifier from field
        Field modifiersField = Field.class.getDeclaredField("modifiers");
        modifiersField.setAccessible(true);
        modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

        field.set(null, newValue);
    }

Call it with:

mockFinalStaticField(yourClass.getClass().getDeclaredField("FINAL_STATIC_FIELDNAME"), yourMock);

No comments:

Post a Comment