application test : archtest
This commit is contained in:
@@ -73,6 +73,14 @@
|
|||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tngtech.archunit</groupId>
|
||||||
|
<artifactId>archunit-junit5-engine</artifactId>
|
||||||
|
<version>0.12.0</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.junit.vintage</groupId>
|
<groupId>org.junit.vintage</groupId>
|
||||||
<artifactId>junit-vintage-engine</artifactId>
|
<artifactId>junit-vintage-engine</artifactId>
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
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,53 @@
|
|||||||
|
package com.example.apptest.study;
|
||||||
|
|
||||||
|
import com.tngtech.archunit.core.domain.JavaClasses;
|
||||||
|
import com.tngtech.archunit.core.importer.ClassFileImporter;
|
||||||
|
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;
|
||||||
|
|
||||||
|
public class ArchTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void packageDependencyTests_4() {
|
||||||
|
JavaClasses classes = new ClassFileImporter().importPackages("com.example.apptest");
|
||||||
|
|
||||||
|
SliceRule freeOfCycles = SlicesRuleDefinition.slices().matching("..apptest.(*)..")
|
||||||
|
.should().beFreeOfCycles();
|
||||||
|
|
||||||
|
freeOfCycles.check(classes);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void packageDependencyTests_3() {
|
||||||
|
JavaClasses classes = new ClassFileImporter().importPackages("com.example.apptest");
|
||||||
|
|
||||||
|
ClassesShouldConjunction studyPackageRule =
|
||||||
|
ArchRuleDefinition.noClasses().that().resideOutsideOfPackage("..study..")
|
||||||
|
.should().accessClassesThat().resideInAPackage("..study..");
|
||||||
|
|
||||||
|
studyPackageRule.check(classes);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void packageDependencyTests_2() {
|
||||||
|
JavaClasses classes = new ClassFileImporter().importPackages("com.example.apptest");
|
||||||
|
|
||||||
|
ClassesShouldConjunction memberPackageRule = ArchRuleDefinition.noClasses().that().resideInAPackage("..domain..")
|
||||||
|
.should().accessClassesThat().resideInAnyPackage("..member..");
|
||||||
|
|
||||||
|
memberPackageRule.check(classes);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void packageDependencyTests() {
|
||||||
|
JavaClasses classes = new ClassFileImporter().importPackages("com.example.apptest");
|
||||||
|
|
||||||
|
ClassesShouldConjunction domainPackageRule = ArchRuleDefinition.classes().that().resideInAPackage("..domain..")
|
||||||
|
.should().onlyBeAccessed().byClassesThat().resideInAnyPackage("..study..", "..member..", "..domain..");
|
||||||
|
|
||||||
|
domainPackageRule.check(classes);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user