application test : ArchUnit - JUnit 연동
This commit is contained in:
@@ -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<Member> 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) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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..");
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user