Mock Config Rule
MockConfigRule is JUnit @Rule that handles mocking of the Config
class. This removes the need of PowerMocking Config, and considerably
speeds up the test.
Note:
MockConfigRulesupports JUnit 4 and JUnit 5 Legacy Engine. For JUnit Jupiter, use MockConfigExtension instead.
Creating the Rule
Like with any Rule, the only thing you need to do in order to
incorporate it in your test class is to declare a public member
annotated with @Rule or a public static member annotated with
@ClassRule:
@Rule
public final MockConfigRule mcr = new MockConfigRule();
Mocking Different Config Values per Test
Now that you have the MockConfigRule defined, you can call the
mockConfig method to mock a configuration value. E.g.:
public void testSomethingRegardingLDAP() {
mcr.mockConfig(ConfigValues.LDAPSecurityAuthentication, ConfigCommon.defaultConfigurationVersion, "SIMPLE");
// rest of the test the relies on the LDAPSecurityAuthentication configuraion.
}
Note:
If you omit the version parameter,ConfigCommon.defaultConfigurationVersionwill be used by default:
public void testSomethingRegardingLDAP() {
mcr.mockConfig(ConfigValues.LDAPSecurityAuthentication, "SIMPLE");
// rest of the test the relies on the LDAPSecurityAuthentication configuraion.
}
Mocking The Same Config Values for the Entire Test Suite
The above approach is comfortable when each test requires a different
configuration, but sometimes, you’d like you entire test-suite to use
the same configurations. This can be done with a @Before annotation,
but that would be tedious and repetitive. MockConfigRule provides an
easier way to do this, in the @Rule’s construction time, using the
mockConfig static creator, e.g.:
@ClassRule
public static final MockConfigRule mcr = new MockConfigRule(
mockConfig(ConfigValues.LDAPSecurityAuthentication, "SIMPLE"),
mockConfig(ConfigValues.SearchResultsLimit, 100),
mockConfig(ConfigValues.AuthenticationMethod, "LDAP"),
mockConfig(ConfigValues.DBEngine, "postgres")
);