From d60d4f6a0c9aa51bb99e5c41f5e29d513c6c20d0 Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Fri, 25 Aug 2023 11:12:05 +0200 Subject: [PATCH 1/9] =?UTF-8?q?=E2=9E=95=20:=20add=20archunit=20dependency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pom.xml b/pom.xml index 9d9ab00..f072cf8 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,7 @@ 6.0.0-rc.1 0.8.10 + 1.1.0 @@ -90,6 +91,12 @@ test + + com.tngtech.archunit + archunit-junit5 + ${archunit.version} + + org.springframework.boot -- 2.51.2 From 5b0e01b4b7aceafbee27771844c476b6334bde63 Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Fri, 25 Aug 2023 11:18:43 +0200 Subject: [PATCH 2/9] =?UTF-8?q?=E2=9C=85=20:=20add=20repository=20visibili?= =?UTF-8?q?ty=20rule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gitlab/classrooms/ArchitectureTest.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java diff --git a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java new file mode 100644 index 0000000..248a76b --- /dev/null +++ b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java @@ -0,0 +1,24 @@ +package fr.univ_lille.gitlab.classrooms; + +import com.tngtech.archunit.core.importer.ClassFileImporter; +import org.junit.jupiter.api.Test; +import org.springframework.data.repository.Repository; + +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; + +class ArchitectureTest { + + @Test + void repositoriesAreNotExposedOutsidePackages() { + var importedClasses = new ClassFileImporter() + .importPackages("fr.univ_lille.gitlab.classrooms"); + + var rule = classes() + .that() + .areAssignableTo(Repository.class) + .should() + .bePackagePrivate(); + + rule.check(importedClasses); + } +} -- 2.51.2 From 0a709097988dbc42d89677b9f6ed1a4a2901ee85 Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Fri, 25 Aug 2023 11:21:31 +0200 Subject: [PATCH 3/9] =?UTF-8?q?=E2=9C=85=20:=20service=20interface=20visib?= =?UTF-8?q?ility=20rule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gitlab/classrooms/ArchitectureTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java index 248a76b..2c28b9f 100644 --- a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java +++ b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java @@ -21,4 +21,20 @@ class ArchitectureTest { rule.check(importedClasses); } + + @Test + void serviceInterfacesAreExposedAsPublic() { + var importedClasses = new ClassFileImporter() + .importPackages("fr.univ_lille.gitlab.classrooms"); + + var rule = classes() + .that() + .haveNameMatching(".*Service") + .should() + .beInterfaces() + .andShould() + .bePublic(); + + rule.check(importedClasses); + } } -- 2.51.2 From e78b7cbf3d7c4c0aefd56bfadbcb627699fc4f8e Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Fri, 25 Aug 2023 11:27:40 +0200 Subject: [PATCH 4/9] =?UTF-8?q?=E2=99=BB=20:=20rewrite=20using=20@ArchTest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gitlab/classrooms/ArchitectureTest.java | 50 +++++++------------ 1 file changed, 19 insertions(+), 31 deletions(-) diff --git a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java index 2c28b9f..913bd75 100644 --- a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java +++ b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java @@ -1,40 +1,28 @@ package fr.univ_lille.gitlab.classrooms; -import com.tngtech.archunit.core.importer.ClassFileImporter; -import org.junit.jupiter.api.Test; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.lang.ArchRule; import org.springframework.data.repository.Repository; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; +@AnalyzeClasses(packages = "fr.univ_lille.gitlab.classrooms") class ArchitectureTest { - @Test - void repositoriesAreNotExposedOutsidePackages() { - var importedClasses = new ClassFileImporter() - .importPackages("fr.univ_lille.gitlab.classrooms"); - - var rule = classes() - .that() - .areAssignableTo(Repository.class) - .should() - .bePackagePrivate(); - - rule.check(importedClasses); - } - - @Test - void serviceInterfacesAreExposedAsPublic() { - var importedClasses = new ClassFileImporter() - .importPackages("fr.univ_lille.gitlab.classrooms"); - - var rule = classes() - .that() - .haveNameMatching(".*Service") - .should() - .beInterfaces() - .andShould() - .bePublic(); - - rule.check(importedClasses); - } + @ArchTest + final ArchRule repositoriesAreNotExposedOutsidePackages = classes() + .that() + .areAssignableTo(Repository.class) + .should() + .bePackagePrivate(); + + @ArchTest + final ArchRule serviceInterfacesAreExposedAsPublic = classes() + .that() + .haveNameMatching(".*Service") + .should() + .beInterfaces() + .andShould() + .bePublic(); } -- 2.51.2 From bff5c478874a11c7c9b55b8ac8a5e20157403c48 Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Fri, 25 Aug 2023 11:29:40 +0200 Subject: [PATCH 5/9] =?UTF-8?q?=E2=9C=85=20:=20add=20controller=20visibili?= =?UTF-8?q?ty=20rule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classrooms/dashboard/DashboardController.java | 2 +- .../univ_lille/gitlab/classrooms/ArchitectureTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/dashboard/DashboardController.java b/src/main/java/fr/univ_lille/gitlab/classrooms/dashboard/DashboardController.java index 5ba02d2..d37bc40 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/dashboard/DashboardController.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/dashboard/DashboardController.java @@ -15,7 +15,7 @@ import java.util.List; @Controller @RequestMapping("/") -public class DashboardController { +class DashboardController { private final ClassroomService classroomService; diff --git a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java index 913bd75..5d66e45 100644 --- a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java +++ b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java @@ -4,6 +4,7 @@ import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.lang.ArchRule; import org.springframework.data.repository.Repository; +import org.springframework.stereotype.Controller; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; @@ -25,4 +26,13 @@ class ArchitectureTest { .beInterfaces() .andShould() .bePublic(); + + @ArchTest + final ArchRule controllersAreNotExposedOutsidePackages = classes() + .that() + .haveNameMatching(".*Controller") + .or() + .areAnnotatedWith(Controller.class) + .should() + .bePackagePrivate(); } -- 2.51.2 From 6cb7281b0740a186cf586c93dd467f4fa067cf46 Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Fri, 25 Aug 2023 11:31:22 +0200 Subject: [PATCH 6/9] =?UTF-8?q?=E2=9C=85=20:=20add=20service=20implementat?= =?UTF-8?q?ions=20visibility=20rule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assignments/AssignmentScoreServiceImpl.java | 2 +- .../gitlab/classrooms/ArchitectureTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentScoreServiceImpl.java b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentScoreServiceImpl.java index b1198bc..ce1cf8e 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentScoreServiceImpl.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentScoreServiceImpl.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Service; import java.time.ZonedDateTime; @Service -public class AssignmentScoreServiceImpl implements AssignmentScoreService{ +class AssignmentScoreServiceImpl implements AssignmentScoreService{ private final StudentAssignmentRepository studentAssignmentRepository; diff --git a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java index 5d66e45..a4665c7 100644 --- a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java +++ b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java @@ -5,6 +5,7 @@ import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.lang.ArchRule; import org.springframework.data.repository.Repository; import org.springframework.stereotype.Controller; +import org.springframework.stereotype.Service; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; @@ -27,6 +28,17 @@ class ArchitectureTest { .andShould() .bePublic(); + @ArchTest + final ArchRule serviceImplementationsAreNotExposedOutsidePackages = classes() + .that() + .haveNameMatching(".*ServiceImpl") + .or() + .areAnnotatedWith(Service.class) + .should() + .beTopLevelClasses() + .andShould() + .bePackagePrivate(); + @ArchTest final ArchRule controllersAreNotExposedOutsidePackages = classes() .that() -- 2.51.2 From 61a65818c211c5beac675ed5f48fbe89a18a249c Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Fri, 25 Aug 2023 11:40:18 +0200 Subject: [PATCH 7/9] =?UTF-8?q?=E2=9C=85=20:=20add=20only=20final=20fields?= =?UTF-8?q?=20rule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classrooms/quiz/QuizAnswerController.java | 4 ++-- .../classrooms/quiz/QuizEditionController.java | 2 +- .../gitlab/classrooms/ArchitectureTest.java | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizAnswerController.java b/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizAnswerController.java index 6247f8f..adebca7 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizAnswerController.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizAnswerController.java @@ -18,9 +18,9 @@ import java.util.UUID; @RequestMapping("/assignments/{assignmentId}/quiz") class QuizAnswerController { - final AssignmentService assignmentService; + private final AssignmentService assignmentService; - final AssignmentScoreService assignmentScoreService; + private final AssignmentScoreService assignmentScoreService; public QuizAnswerController(AssignmentService assignmentService, AssignmentScoreService assignmentScoreService) { this.assignmentService = assignmentService; diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizEditionController.java b/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizEditionController.java index e029dc4..8a34fcf 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizEditionController.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizEditionController.java @@ -16,7 +16,7 @@ class QuizEditionController { private static final String QUIZ_LIST_PAGE = "quiz/list"; private static final String QUIZ_EDIT_PAGE = "quiz/edit"; - QuizRepository quizRepository; + private final QuizRepository quizRepository; public QuizEditionController(QuizRepository quizRepository) { this.quizRepository = quizRepository; diff --git a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java index a4665c7..157ef58 100644 --- a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java +++ b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Controller; import org.springframework.stereotype.Service; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.fields; @AnalyzeClasses(packages = "fr.univ_lille.gitlab.classrooms") class ArchitectureTest { @@ -47,4 +48,20 @@ class ArchitectureTest { .areAnnotatedWith(Controller.class) .should() .bePackagePrivate(); + + @ArchTest + final ArchRule controllersAndServicesOnlyHaveFinalPrivateFields = fields() + .that() + .areDeclaredInClassesThat() + .haveNameMatching(".*Controller") + .or() + .areAnnotatedWith(Controller.class) + .or() + .haveNameMatching(".*ServiceImpl") + .or() + .areAnnotatedWith(Service.class) + .should() + .beFinal() + .andShould() + .bePrivate(); } -- 2.51.2 From 83cdc69831116d3ca9dd7d7908147c2f10e8e3f6 Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Fri, 25 Aug 2023 11:47:02 +0200 Subject: [PATCH 8/9] =?UTF-8?q?=E2=9C=85=20:=20add=20constructors=20visibi?= =?UTF-8?q?lity=20rule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assignments/AssignmentController.java | 2 +- .../classrooms/ClassroomController.java | 2 +- .../dashboard/DashboardController.java | 2 +- .../classrooms/quiz/QuizAnswerController.java | 2 +- .../classrooms/quiz/QuizEditionController.java | 2 +- .../gitlab/classrooms/ArchitectureTest.java | 17 +++++++++++++++-- 6 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentController.java b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentController.java index 13ced93..0be35ce 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentController.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentController.java @@ -31,7 +31,7 @@ class AssignmentController { private static final System.Logger LOGGER = System.getLogger(AssignmentController.class.getName()); - public AssignmentController(AssignmentService assignmentService, QuizService quizService, ClassroomService classroomService, Gitlab gitlab) { + AssignmentController(AssignmentService assignmentService, QuizService quizService, ClassroomService classroomService, Gitlab gitlab) { this.assignmentService = assignmentService; this.quizService = quizService; this.classroomService = classroomService; diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/classrooms/ClassroomController.java b/src/main/java/fr/univ_lille/gitlab/classrooms/classrooms/ClassroomController.java index 1aaef06..d03c15d 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/classrooms/ClassroomController.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/classrooms/ClassroomController.java @@ -26,7 +26,7 @@ class ClassroomController { private static final System.Logger LOGGER = System.getLogger(ClassroomController.class.getName()); - public ClassroomController(ClassroomService classroomService, Gitlab gitlab) { + ClassroomController(ClassroomService classroomService, Gitlab gitlab) { this.classroomService = classroomService; this.gitlab = gitlab; } diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/dashboard/DashboardController.java b/src/main/java/fr/univ_lille/gitlab/classrooms/dashboard/DashboardController.java index d37bc40..b22ca6f 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/dashboard/DashboardController.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/dashboard/DashboardController.java @@ -21,7 +21,7 @@ class DashboardController { private final AssignmentService assignmentService; - public DashboardController(ClassroomService classroomService, AssignmentService assignmentService) { + DashboardController(ClassroomService classroomService, AssignmentService assignmentService) { this.classroomService = classroomService; this.assignmentService = assignmentService; } diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizAnswerController.java b/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizAnswerController.java index adebca7..5e33373 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizAnswerController.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizAnswerController.java @@ -22,7 +22,7 @@ class QuizAnswerController { private final AssignmentScoreService assignmentScoreService; - public QuizAnswerController(AssignmentService assignmentService, AssignmentScoreService assignmentScoreService) { + QuizAnswerController(AssignmentService assignmentService, AssignmentScoreService assignmentScoreService) { this.assignmentService = assignmentService; this.assignmentScoreService = assignmentScoreService; } diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizEditionController.java b/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizEditionController.java index 8a34fcf..d4866b9 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizEditionController.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/quiz/QuizEditionController.java @@ -18,7 +18,7 @@ class QuizEditionController { private final QuizRepository quizRepository; - public QuizEditionController(QuizRepository quizRepository) { + QuizEditionController(QuizRepository quizRepository) { this.quizRepository = quizRepository; } diff --git a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java index 157ef58..90e90d0 100644 --- a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java +++ b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java @@ -7,8 +7,7 @@ import org.springframework.data.repository.Repository; import org.springframework.stereotype.Controller; import org.springframework.stereotype.Service; -import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; -import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.fields; +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.*; @AnalyzeClasses(packages = "fr.univ_lille.gitlab.classrooms") class ArchitectureTest { @@ -64,4 +63,18 @@ class ArchitectureTest { .beFinal() .andShould() .bePrivate(); + + @ArchTest + final ArchRule controllersAndServicesOnlyHavePackagePrivateConstructors = constructors() + .that() + .areDeclaredInClassesThat() + .haveNameMatching(".*Controller") + .or() + .areAnnotatedWith(Controller.class) + .or() + .haveNameMatching(".*ServiceImpl") + .or() + .areAnnotatedWith(Service.class) + .should() + .bePackagePrivate(); } -- 2.51.2 From 9975bc92d29730fdbad5be25c02e77c288ea3859 Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Fri, 25 Aug 2023 11:52:42 +0200 Subject: [PATCH 9/9] =?UTF-8?q?=E2=9C=85=20:=20generate=20better=20display?= =?UTF-8?q?=20names?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gitlab/classrooms/ArchitectureTest.java | 12 ++++++------ src/test/resources/archunit.properties | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 src/test/resources/archunit.properties diff --git a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java index 90e90d0..d7750ba 100644 --- a/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java +++ b/src/test/java/fr/univ_lille/gitlab/classrooms/ArchitectureTest.java @@ -13,14 +13,14 @@ import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.*; class ArchitectureTest { @ArchTest - final ArchRule repositoriesAreNotExposedOutsidePackages = classes() + final ArchRule repositories_are_not_exposed_outside_packages = classes() .that() .areAssignableTo(Repository.class) .should() .bePackagePrivate(); @ArchTest - final ArchRule serviceInterfacesAreExposedAsPublic = classes() + final ArchRule service_interfaces_are_exposed_as_public = classes() .that() .haveNameMatching(".*Service") .should() @@ -29,7 +29,7 @@ class ArchitectureTest { .bePublic(); @ArchTest - final ArchRule serviceImplementationsAreNotExposedOutsidePackages = classes() + final ArchRule service_implementations_are_not_exposed_outside_packages = classes() .that() .haveNameMatching(".*ServiceImpl") .or() @@ -40,7 +40,7 @@ class ArchitectureTest { .bePackagePrivate(); @ArchTest - final ArchRule controllersAreNotExposedOutsidePackages = classes() + final ArchRule controllers_are_not_exposed_outside_packages = classes() .that() .haveNameMatching(".*Controller") .or() @@ -49,7 +49,7 @@ class ArchitectureTest { .bePackagePrivate(); @ArchTest - final ArchRule controllersAndServicesOnlyHaveFinalPrivateFields = fields() + final ArchRule controllers_and_services_only_have_private_final_fields = fields() .that() .areDeclaredInClassesThat() .haveNameMatching(".*Controller") @@ -65,7 +65,7 @@ class ArchitectureTest { .bePrivate(); @ArchTest - final ArchRule controllersAndServicesOnlyHavePackagePrivateConstructors = constructors() + final ArchRule controllers_and_services_only_have_package_private_constructors = constructors() .that() .areDeclaredInClassesThat() .haveNameMatching(".*Controller") diff --git a/src/test/resources/archunit.properties b/src/test/resources/archunit.properties new file mode 100644 index 0000000..d93e375 --- /dev/null +++ b/src/test/resources/archunit.properties @@ -0,0 +1 @@ +junit.displayName.replaceUnderscoresBySpaces=true -- 2.51.2