From a6cd2f88d4498a9f1be8b19b31639d1fda00f3ea Mon Sep 17 00:00:00 2001 From: haerong22 Date: Wed, 3 Mar 2021 17:59:30 +0900 Subject: [PATCH] application test : ArchUnit - class dependency test --- .../example/apptest/study/ArchClassTests.java | 32 +++++++++++++++++++ ...ArchJUnitTest.java => ArchJUnitTests.java} | 8 +++-- .../example/apptest/{ => study}/FastTest.java | 2 +- .../{ => study}/FindSlowTestExtension.java | 2 +- .../{ => study}/FindSlowTestExtension_2.java | 2 +- .../example/apptest/{ => study}/SlowTest.java | 2 +- .../{ => study}/StudyExtensionTest.java | 2 +- .../apptest/{ => study}/StudyJUnit4Test.java | 2 +- .../apptest/{ => study}/StudyTest.java | 2 +- 9 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 application-test/app-test/src/test/java/com/example/apptest/study/ArchClassTests.java rename application-test/app-test/src/test/java/com/example/apptest/study/{ArchJUnitTest.java => ArchJUnitTests.java} (81%) rename application-test/app-test/src/test/java/com/example/apptest/{ => study}/FastTest.java (90%) rename application-test/app-test/src/test/java/com/example/apptest/{ => study}/FindSlowTestExtension.java (98%) rename application-test/app-test/src/test/java/com/example/apptest/{ => study}/FindSlowTestExtension_2.java (98%) rename application-test/app-test/src/test/java/com/example/apptest/{ => study}/SlowTest.java (90%) rename application-test/app-test/src/test/java/com/example/apptest/{ => study}/StudyExtensionTest.java (97%) rename application-test/app-test/src/test/java/com/example/apptest/{ => study}/StudyJUnit4Test.java (88%) rename application-test/app-test/src/test/java/com/example/apptest/{ => study}/StudyTest.java (99%) diff --git a/application-test/app-test/src/test/java/com/example/apptest/study/ArchClassTests.java b/application-test/app-test/src/test/java/com/example/apptest/study/ArchClassTests.java new file mode 100644 index 00000000..84803434 --- /dev/null +++ b/application-test/app-test/src/test/java/com/example/apptest/study/ArchClassTests.java @@ -0,0 +1,32 @@ +package com.example.apptest.study; + +import com.example.apptest.App; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.lang.syntax.ArchRuleDefinition; +import com.tngtech.archunit.lang.syntax.elements.ClassesShouldConjunction; + +import javax.persistence.Entity; + +@AnalyzeClasses(packagesOf = App.class) +public class ArchClassTests { + +// @ArchTest +// ClassesShouldConjunction controllerClassRule = +// ArchRuleDefinition.classes().that().haveSimpleNameEndingWith("Controller") +// .should().accessClassesThat().haveSimpleNameEndingWith("Service") +// .orShould().accessClassesThat().haveSimpleNameEndingWith("Repository"); + +// @ArchTest +// ClassesShouldConjunction repositoryClassRule = +// ArchRuleDefinition.noClasses().that().haveSimpleNameEndingWith("Repository") +// .should().accessClassesThat().haveSimpleNameEndingWith("Service") +// .orShould().accessClassesThat().haveSimpleNameEndingWith("Controller"); + + @ArchTest + ClassesShouldConjunction studyClassesRule = + ArchRuleDefinition.classes().that().haveSimpleNameStartingWith("Study") + .and().areNotEnums() + .and().areNotAnnotatedWith(Entity.class) + .should().resideInAnyPackage("..study.."); +} diff --git a/application-test/app-test/src/test/java/com/example/apptest/study/ArchJUnitTest.java b/application-test/app-test/src/test/java/com/example/apptest/study/ArchJUnitTests.java similarity index 81% rename from application-test/app-test/src/test/java/com/example/apptest/study/ArchJUnitTest.java rename to application-test/app-test/src/test/java/com/example/apptest/study/ArchJUnitTests.java index 4975fbb5..37fddd77 100644 --- a/application-test/app-test/src/test/java/com/example/apptest/study/ArchJUnitTest.java +++ b/application-test/app-test/src/test/java/com/example/apptest/study/ArchJUnitTests.java @@ -13,7 +13,7 @@ import org.junit.jupiter.api.Test; // App.class 가 있는 패키지 선택 @AnalyzeClasses(packagesOf = App.class) -public class ArchJUnitTest { +public class ArchJUnitTests { // 룰 정의 후 테스트 @ArchTest @@ -26,11 +26,13 @@ public class ArchJUnitTest { .should().accessClassesThat().resideInAPackage("..study.."); @ArchTest - ClassesShouldConjunction memberPackageRule = ArchRuleDefinition.noClasses().that().resideInAPackage("..domain..") + ClassesShouldConjunction memberPackageRule = + ArchRuleDefinition.noClasses().that().resideInAPackage("..domain..") .should().accessClassesThat().resideInAnyPackage("..member.."); @ArchTest - ClassesShouldConjunction domainPackageRule = ArchRuleDefinition.classes().that().resideInAPackage("..domain..") + ClassesShouldConjunction domainPackageRule = + ArchRuleDefinition.classes().that().resideInAPackage("..domain..") .should().onlyBeAccessed().byClassesThat().resideInAnyPackage("..study..", "..member..", "..domain.."); } diff --git a/application-test/app-test/src/test/java/com/example/apptest/FastTest.java b/application-test/app-test/src/test/java/com/example/apptest/study/FastTest.java similarity index 90% rename from application-test/app-test/src/test/java/com/example/apptest/FastTest.java rename to application-test/app-test/src/test/java/com/example/apptest/study/FastTest.java index 2412cd40..b1eece4c 100644 --- a/application-test/app-test/src/test/java/com/example/apptest/FastTest.java +++ b/application-test/app-test/src/test/java/com/example/apptest/study/FastTest.java @@ -1,4 +1,4 @@ -package com.example.apptest; +package com.example.apptest.study; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; diff --git a/application-test/app-test/src/test/java/com/example/apptest/FindSlowTestExtension.java b/application-test/app-test/src/test/java/com/example/apptest/study/FindSlowTestExtension.java similarity index 98% rename from application-test/app-test/src/test/java/com/example/apptest/FindSlowTestExtension.java rename to application-test/app-test/src/test/java/com/example/apptest/study/FindSlowTestExtension.java index 358b562d..82673ce3 100644 --- a/application-test/app-test/src/test/java/com/example/apptest/FindSlowTestExtension.java +++ b/application-test/app-test/src/test/java/com/example/apptest/study/FindSlowTestExtension.java @@ -1,4 +1,4 @@ -package com.example.apptest; +package com.example.apptest.study; import org.junit.jupiter.api.extension.AfterTestExecutionCallback; import org.junit.jupiter.api.extension.BeforeTestExecutionCallback; diff --git a/application-test/app-test/src/test/java/com/example/apptest/FindSlowTestExtension_2.java b/application-test/app-test/src/test/java/com/example/apptest/study/FindSlowTestExtension_2.java similarity index 98% rename from application-test/app-test/src/test/java/com/example/apptest/FindSlowTestExtension_2.java rename to application-test/app-test/src/test/java/com/example/apptest/study/FindSlowTestExtension_2.java index 64727fd6..0c0df4a3 100644 --- a/application-test/app-test/src/test/java/com/example/apptest/FindSlowTestExtension_2.java +++ b/application-test/app-test/src/test/java/com/example/apptest/study/FindSlowTestExtension_2.java @@ -1,4 +1,4 @@ -package com.example.apptest; +package com.example.apptest.study; import org.junit.jupiter.api.extension.AfterTestExecutionCallback; import org.junit.jupiter.api.extension.BeforeTestExecutionCallback; diff --git a/application-test/app-test/src/test/java/com/example/apptest/SlowTest.java b/application-test/app-test/src/test/java/com/example/apptest/study/SlowTest.java similarity index 90% rename from application-test/app-test/src/test/java/com/example/apptest/SlowTest.java rename to application-test/app-test/src/test/java/com/example/apptest/study/SlowTest.java index a997afa5..b39aca19 100644 --- a/application-test/app-test/src/test/java/com/example/apptest/SlowTest.java +++ b/application-test/app-test/src/test/java/com/example/apptest/study/SlowTest.java @@ -1,4 +1,4 @@ -package com.example.apptest; +package com.example.apptest.study; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; diff --git a/application-test/app-test/src/test/java/com/example/apptest/StudyExtensionTest.java b/application-test/app-test/src/test/java/com/example/apptest/study/StudyExtensionTest.java similarity index 97% rename from application-test/app-test/src/test/java/com/example/apptest/StudyExtensionTest.java rename to application-test/app-test/src/test/java/com/example/apptest/study/StudyExtensionTest.java index 34d7c4b0..dab87b83 100644 --- a/application-test/app-test/src/test/java/com/example/apptest/StudyExtensionTest.java +++ b/application-test/app-test/src/test/java/com/example/apptest/study/StudyExtensionTest.java @@ -1,4 +1,4 @@ -package com.example.apptest; +package com.example.apptest.study; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/application-test/app-test/src/test/java/com/example/apptest/StudyJUnit4Test.java b/application-test/app-test/src/test/java/com/example/apptest/study/StudyJUnit4Test.java similarity index 88% rename from application-test/app-test/src/test/java/com/example/apptest/StudyJUnit4Test.java rename to application-test/app-test/src/test/java/com/example/apptest/study/StudyJUnit4Test.java index a94414a0..56f2287f 100644 --- a/application-test/app-test/src/test/java/com/example/apptest/StudyJUnit4Test.java +++ b/application-test/app-test/src/test/java/com/example/apptest/study/StudyJUnit4Test.java @@ -1,4 +1,4 @@ -package com.example.apptest; +package com.example.apptest.study; import org.junit.Before; import org.junit.Test; diff --git a/application-test/app-test/src/test/java/com/example/apptest/StudyTest.java b/application-test/app-test/src/test/java/com/example/apptest/study/StudyTest.java similarity index 99% rename from application-test/app-test/src/test/java/com/example/apptest/StudyTest.java rename to application-test/app-test/src/test/java/com/example/apptest/study/StudyTest.java index 80e2fbcf..567a8e23 100644 --- a/application-test/app-test/src/test/java/com/example/apptest/StudyTest.java +++ b/application-test/app-test/src/test/java/com/example/apptest/study/StudyTest.java @@ -1,4 +1,4 @@ -package com.example.apptest; +package com.example.apptest.study; import org.junit.jupiter.api.*; import org.junit.jupiter.api.condition.*;