diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/context/ImportsContextCustomizer.java b/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/context/ImportsContextCustomizer.java index 04b0691567c8..c793915edf80 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/context/ImportsContextCustomizer.java +++ b/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/context/ImportsContextCustomizer.java @@ -223,6 +223,7 @@ static class ContextCustomizerKey { filters.add(new JavaLangAnnotationFilter()); filters.add(new KotlinAnnotationFilter()); filters.add(new SpockAnnotationFilter()); + filters.add(new JunitAnnotationFilter()); ANNOTATION_FILTERS = Collections.unmodifiableSet(filters); } @@ -385,4 +386,16 @@ public boolean isIgnored(Annotation annotation) { } + /** + * {@link AnnotationFilter} for JUnit annotations. + */ + private static final class JunitAnnotationFilter implements AnnotationFilter { + + @Override + public boolean isIgnored(Annotation annotation) { + return annotation.annotationType().getName().startsWith("org.junit."); + } + + } + } diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/context/ImportsContextCustomizerTests.java b/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/context/ImportsContextCustomizerTests.java index 01f048b7d602..6ed9f8419f26 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/context/ImportsContextCustomizerTests.java +++ b/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/context/ImportsContextCustomizerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,8 @@ import java.util.Set; import kotlin.Metadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.spockframework.runtime.model.SpecMetadata; import spock.lang.Issue; @@ -72,6 +74,12 @@ void customizersForTestClassesWithDifferentSpockLangAnnotationsAreEqual() { .isEqualTo(new ImportsContextCustomizer(SecondSpockLangAnnotatedTestClass.class)); } + @Test + void customizersForTestClassesWithDifferentJunitAnnotationsAreEqual() { + assertThat(new ImportsContextCustomizer(FirstJunitAnnotatedTestClass.class)) + .isEqualTo(new ImportsContextCustomizer(SecondJunitAnnotatedTestClass.class)); + } + @Import(TestImportSelector.class) @Indicator1 static class FirstImportSelectorAnnotatedClass { @@ -126,6 +134,18 @@ static class SecondSpockLangAnnotatedTestClass { } + @Nested + @Import(TestImportSelector.class) + static class FirstJunitAnnotatedTestClass { + + } + + @Tag("test") + @Import(TestImportSelector.class) + static class SecondJunitAnnotatedTestClass { + + } + @Retention(RetentionPolicy.RUNTIME) @interface Indicator1 {