diff --git a/archunit/src/main/java/com/tngtech/archunit/core/importer/ImportOption.java b/archunit/src/main/java/com/tngtech/archunit/core/importer/ImportOption.java index 887a95e68..276e1f497 100644 --- a/archunit/src/main/java/com/tngtech/archunit/core/importer/ImportOption.java +++ b/archunit/src/main/java/com/tngtech/archunit/core/importer/ImportOption.java @@ -99,7 +99,7 @@ public boolean includes(Location location) { }; static final PatternPredicate MAVEN_TEST_PATTERN = new PatternPredicate(".*/target/test-classes/.*"); - static final PatternPredicate GRADLE_TEST_PATTERN = new PatternPredicate(".*/build/classes/([^/]+/)?test/.*"); + static final PatternPredicate GRADLE_TEST_PATTERN = new PatternPredicate(".*/build/classes/([^/]+/)?(test|[^/]+Test)s?/.*"); static final PatternPredicate INTELLIJ_TEST_PATTERN = new PatternPredicate(".*/out/test/.*"); static final Predicate TEST_LOCATION = MAVEN_TEST_PATTERN.or(GRADLE_TEST_PATTERN).or(INTELLIJ_TEST_PATTERN); static final Predicate NO_TEST_LOCATION = TEST_LOCATION.negate(); @@ -122,6 +122,8 @@ public boolean test(Location input) { * Best effort {@link ImportOption} to check rules only on main classes.
* NOTE: This excludes all class files residing in some directory * ../target/test-classes/.., ../build/classes/test/.. or ../build/classes/someLang/test/.. (Maven/Gradle standard). + * This also covers custom Gradle test source sets that follow the {@code ...Test} naming convention, + * e.g. ../build/classes/someLang/integrationTest/... * Thus it is just a best guess, how tests can be identified, * in other environments, it might be necessary, to implement the correct {@link ImportOption} yourself. */ diff --git a/archunit/src/test/java/com/tngtech/archunit/core/importer/ImportOptionsTest.java b/archunit/src/test/java/com/tngtech/archunit/core/importer/ImportOptionsTest.java index 5fe9cad65..3c9ee6dfd 100644 --- a/archunit/src/test/java/com/tngtech/archunit/core/importer/ImportOptionsTest.java +++ b/archunit/src/test/java/com/tngtech/archunit/core/importer/ImportOptionsTest.java @@ -83,6 +83,11 @@ private static List getFolderPatterns() { new FolderPattern("build", "classes", "main").expectMainFolder(), new FolderPattern("build", "classes", "java", "main").expectMainFolder(), new FolderPattern("build", "classes", "java", "main", "my", "test").expectMainFolder(), + new FolderPattern("build", "classes", "java", "integrationTest").expectTestFolder(), + new FolderPattern("build", "classes", "otherlang", "functionalTest").expectTestFolder(), + new FolderPattern("build", "classes", "java", "e2eTest").expectTestFolder(), + new FolderPattern("build", "classes", "java", "tests").expectTestFolder(), + new FolderPattern("build", "classes", "java", "testFixtures").expectMainFolder(), // Maven new FolderPattern("target", "classes", "test").expectMainFolder(),