diff --git a/application-test/app-test/src/main/java/com/example/apptest/member/DefaultMemberService.java b/application-test/app-test/src/main/java/com/example/apptest/member/DefaultMemberService.java deleted file mode 100644 index a61637aa..00000000 --- a/application-test/app-test/src/main/java/com/example/apptest/member/DefaultMemberService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.example.apptest.member; - -import com.example.apptest.domain.Member; -import com.example.apptest.domain.Study; -import com.example.apptest.study.StudyService; - -import java.util.Optional; - -public class DefaultMemberService implements MemberService{ - - StudyService studyService; - - @Override - public Optional findById(Long memberId) { - return Optional.empty(); - } - - @Override - public void validate(Long memberId) { - studyService.openStudy(new Study()); - } - - @Override - public void notify(Study newStudy) { - - } - - @Override - public void notify(Member member) { - - } -} 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/ArchJUnitTest.java new file mode 100644 index 00000000..4975fbb5 --- /dev/null +++ b/application-test/app-test/src/test/java/com/example/apptest/study/ArchJUnitTest.java @@ -0,0 +1,36 @@ +package com.example.apptest.study; + +import com.example.apptest.App; +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ClassFileImporter; +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 com.tngtech.archunit.library.dependencies.SliceRule; +import com.tngtech.archunit.library.dependencies.SlicesRuleDefinition; +import org.junit.jupiter.api.Test; + +// App.class 가 있는 패키지 선택 +@AnalyzeClasses(packagesOf = App.class) +public class ArchJUnitTest { + + // 룰 정의 후 테스트 + @ArchTest + SliceRule freeOfCycles = SlicesRuleDefinition.slices().matching("..apptest.(*)..") + .should().beFreeOfCycles(); + + @ArchTest + ClassesShouldConjunction studyPackageRule = + ArchRuleDefinition.noClasses().that().resideOutsideOfPackage("..study..") + .should().accessClassesThat().resideInAPackage("..study.."); + + @ArchTest + ClassesShouldConjunction memberPackageRule = ArchRuleDefinition.noClasses().that().resideInAPackage("..domain..") + .should().accessClassesThat().resideInAnyPackage("..member.."); + + @ArchTest + ClassesShouldConjunction domainPackageRule = ArchRuleDefinition.classes().that().resideInAPackage("..domain..") + .should().onlyBeAccessed().byClassesThat().resideInAnyPackage("..study..", "..member..", "..domain.."); + +}