本文翻譯自ArchUnit
ArchUnit 是一個(gè)免費(fèi)疑故、簡(jiǎn)單且可擴(kuò)展的庫邪铲,用于使用任何普通的 Java 單元測(cè)試框架檢查 Java 代碼的體系結(jié)構(gòu)魏烫。 也就是說渴杆,ArchUnit 可以檢查包和類佛点、層和切面之間的依賴關(guān)系宝当,檢查循環(huán)依賴關(guān)系等等(dependencies between packages and classes, layers and slices, check for cyclic dependencies and more)木蹬。 它通過分析給定的 Java 字節(jié)碼句喷、將所有類導(dǎo)入 Java 代碼結(jié)構(gòu)來實(shí)現(xiàn)這一點(diǎn)包帚。 您可以在 ArchUnit 示例和 GitHub 上的源代碼中找到當(dāng)前版本的示例渔期。
如果您想直接進(jìn)入第一個(gè) ArchUnit 測(cè)試,請(qǐng)按照以下步驟操作
添加 ArchUnit 作為依賴
ArchUnit 可以從 Maven 倉庫獲得(obtained)渴邦。
Maven依賴:
<dependency>
<groupId>com.tngtech.archunit</groupId>
<artifactId>archunit</artifactId>
<version>1.0.0-rc1</version>
<scope>test</scope>
</dependency>
Gradle
dependencies {
testImplementation 'com.tngtech.archunit:archunit:1.0.0-rc1'
}
創(chuàng)建一個(gè)測(cè)試
import com.tngtech.archunit.core.domain.JavaClasses;
import com.tngtech.archunit.core.importer.ClassFileImporter;
import com.tngtech.archunit.lang.ArchRule;
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;
public class MyArchitectureTest {
@Test
public void some_architecture_rule() {
JavaClasses importedClasses = new ClassFileImporter().importPackages("com.myapp");
ArchRule rule = classes()... // 看下一部分
rule.check(importedClasses);
}
}
參照API指南
參考該處視頻有相應(yīng)API指南擎场,如:
classes().that().areAnnotatedWith(Serivce.class).or().haveNameMatching(".*Service");
如何繼續(xù)下一步
有關(guān)更多信息羽德,例如如何使用擴(kuò)展的 JUnit 4 支持提供,請(qǐng)查看用戶指南或 ArchUnit 示例中當(dāng)前版本的示例迅办。