Cache default EnclosingConfiguration mode in TestContextAnnotationUtils

This commit is contained in:
Sam Brannen
2020-10-24 22:26:29 +02:00
parent a40cc8bbe0
commit af4d68b1a5
2 changed files with 18 additions and 3 deletions

View File

@@ -75,6 +75,7 @@ public abstract class TestContextAnnotationUtils {
private static final ConcurrentLruCache<Class<?>, EnclosingConfiguration> cachedEnclosingConfigurationModes =
new ConcurrentLruCache<>(32, TestContextAnnotationUtils::lookUpEnclosingConfiguration);
private static EnclosingConfiguration defaultEnclosingConfigurationMode;
/**
* Find the first annotation of the specified {@code annotationType} within
@@ -383,6 +384,10 @@ public abstract class TestContextAnnotationUtils {
return (ClassUtils.isInnerClass(clazz) &&
getEnclosingConfiguration(clazz) == EnclosingConfiguration.INHERIT);
}
static void clearCaches() {
defaultEnclosingConfigurationMode = null;
}
/**
* Get the {@link EnclosingConfiguration} mode for the supplied class.
@@ -405,9 +410,13 @@ public abstract class TestContextAnnotationUtils {
}
private static EnclosingConfiguration getDefaultEnclosingConfigurationMode() {
String value = SpringProperties.getProperty(NestedTestConfiguration.ENCLOSING_CONFIGURATION_PROPERTY_NAME);
EnclosingConfiguration enclosingConfigurationMode = EnclosingConfiguration.from(value);
return (enclosingConfigurationMode != null ? enclosingConfigurationMode : EnclosingConfiguration.INHERIT);
if (defaultEnclosingConfigurationMode == null) {
String value = SpringProperties.getProperty(NestedTestConfiguration.ENCLOSING_CONFIGURATION_PROPERTY_NAME);
EnclosingConfiguration enclosingConfigurationMode = EnclosingConfiguration.from(value);
defaultEnclosingConfigurationMode =
(enclosingConfigurationMode != null ? enclosingConfigurationMode : EnclosingConfiguration.INHERIT);
}
return defaultEnclosingConfigurationMode;
}
private static void assertNonEmptyAnnotationTypeArray(Class<?>[] annotationTypes, String message) {

View File

@@ -23,6 +23,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
@@ -54,6 +55,11 @@ class TestContextAnnotationUtilsTests {
@Nested
@DisplayName("searchEnclosingClass() tests")
class SearchEnclosingClassTests {
@BeforeEach
void clearCaches() {
TestContextAnnotationUtils.clearCaches();
}
@AfterEach
void clearGlobalFlag() {