From 72a8d0f88b4dda562c3451c7830706c573629a9c Mon Sep 17 00:00:00 2001 From: Jan-Willem Gmelig Meyling Date: Thu, 28 May 2020 22:10:28 +0200 Subject: [PATCH] Consider declaring class for Enclosed tests in Categories At QueryDSL, we were surprised that Enclosed tests were not run when the category was included as group filter. It turns out to be because the declaring class is not considered when determining the categories for a particular test. This pull request changes that behaviour to also consider the declaring class. Example: ```java @Category(H2.class) public class H2LiteralsSuiteTest extends AbstractSuite { public static class BeanPopulation extends BeanPopulationBase { } public static class Delete extends DeleteBase { } public static class Insert extends InsertBase { } public static class KeywordQuoting extends KeywordQuotingBase { } public static class LikeEscape extends LikeEscapeBase { } ``` Source: https://github.com/querydsl/querydsl/blob/master/querydsl-sql/src/test/java/com/querydsl/sql/suites/H2LiteralsSuiteTest.java#L9-L16 --- .../org/junit/experimental/categories/Categories.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/org/junit/experimental/categories/Categories.java b/src/main/java/org/junit/experimental/categories/Categories.java index 0c73ed82afff..f4a01a964928 100644 --- a/src/main/java/org/junit/experimental/categories/Categories.java +++ b/src/main/java/org/junit/experimental/categories/Categories.java @@ -278,6 +278,7 @@ private static Set> categories(Description description) { Set> categories= new HashSet>(); Collections.addAll(categories, directCategories(description)); Collections.addAll(categories, directCategories(parentDescription(description))); + Collections.addAll(categories, directCategories(declaringDescription(description))); return categories; } @@ -286,6 +287,14 @@ private static Description parentDescription(Description description) { return testClass == null ? null : Description.createSuiteDescription(testClass); } + private static Description declaringDescription(Description description) { + Class testClass = description.getTestClass(); + if (testClass != null) { + testClass = testClass.getDeclaringClass(); + } + return testClass == null ? null : Description.createSuiteDescription(testClass); + } + private static Class[] directCategories(Description description) { if (description == null) { return new Class[0];