Testing bad configuration on micronaut - krickert/search-api GitHub Wiki
When writing code, I often have to create edge cases that check for bad configuration. So I created a generic way to handle this
import io.micronaut.context.ApplicationContext;
import io.micronaut.context.exceptions.ConfigurationException;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.function.Executable;
import java.util.Map;
import java.util.Set;
public class MicronautConfigTestUtil {
public static <T extends Exception> void errorConfigTest(
String configFile,
Class<T> expectedException,
String expectedMessage,
Class<?>... beanClasses) {
Executable executable = () -> {
try (ApplicationContext context = ApplicationContext.builder()
.properties(Map.of("micronaut.config.files", configFile))
.eagerInitConfiguration(true)
.eagerInitSingletons(true)
.start()) {
// Force bean instantiation if specific classes are provided
if (beanClasses.length > 0) {
for (Class<?> beanClass : beanClasses) {
context.getBean(beanClass);
}
}
}
};
T thrownException = Assertions.assertThrows(expectedException, executable);
Assertions.assertTrue(thrownException.getMessage().contains(expectedMessage),
"Expected error message to contain: " + expectedMessage);
}
}