application test : archtest

This commit is contained in:
haerong22
2021-03-03 17:09:27 +09:00
parent 0774762ff7
commit 63b8593624
3 changed files with 93 additions and 0 deletions

View File

@@ -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>

View File

@@ -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) {
}
}

View File

@@ -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);
}
}