Submit Search
Upload
JCConf2022 Using ArchUnit to test your architecture
•
0 likes
•
43 views
Matt Ho
Follow
Using ArchUnit to test your architecture
Read less
Read more
Technology
Report
Share
Report
Share
1 of 34
Download now
Download to read offline
Recommended
OpenShift_Installation_Deep_Dive_Robert_Bohne.pdf
OpenShift_Installation_Deep_Dive_Robert_Bohne.pdf
ssuser9e06a61
OpenShift 4 installation
OpenShift 4 installation
Robert Bohne
Manoj Kolhe - Setup GitHub with Jenkins on Amazon Cloud - End-to-end Automation
Manoj Kolhe - Setup GitHub with Jenkins on Amazon Cloud - End-to-end Automation
Manoj Kolhe
Modern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with Puppet
Puppet
Kirill Rozin - Practical Wars for Automatization
Kirill Rozin - Practical Wars for Automatization
Sergey Arkhipov
Deploying Kubernetes without scaring off your security team - KubeCon 2017
Deploying Kubernetes without scaring off your security team - KubeCon 2017
Major Hayden
[ENGLISH] TDC 2015 - PHP Trail - Tests and PHP Continuous Integration Enviro...
[ENGLISH] TDC 2015 - PHP Trail - Tests and PHP Continuous Integration Enviro...
Bruno Tanoue
Openshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhce
Darnette A
Recommended
OpenShift_Installation_Deep_Dive_Robert_Bohne.pdf
OpenShift_Installation_Deep_Dive_Robert_Bohne.pdf
ssuser9e06a61
OpenShift 4 installation
OpenShift 4 installation
Robert Bohne
Manoj Kolhe - Setup GitHub with Jenkins on Amazon Cloud - End-to-end Automation
Manoj Kolhe - Setup GitHub with Jenkins on Amazon Cloud - End-to-end Automation
Manoj Kolhe
Modern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with Puppet
Puppet
Kirill Rozin - Practical Wars for Automatization
Kirill Rozin - Practical Wars for Automatization
Sergey Arkhipov
Deploying Kubernetes without scaring off your security team - KubeCon 2017
Deploying Kubernetes without scaring off your security team - KubeCon 2017
Major Hayden
[ENGLISH] TDC 2015 - PHP Trail - Tests and PHP Continuous Integration Enviro...
[ENGLISH] TDC 2015 - PHP Trail - Tests and PHP Continuous Integration Enviro...
Bruno Tanoue
Openshift cheat rhce_r3v1 rhce
Openshift cheat rhce_r3v1 rhce
Darnette A
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Anurag Dwivedi
Implementing CI CD UiPath Using Jenkins Plugin
Implementing CI CD UiPath Using Jenkins Plugin
Satish Prasad
Apache Cloudstack QA Strategy
Apache Cloudstack QA Strategy
Sudha R Ponnaganti
Build server
Build server
Christophe Vanlancker
AzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release Management
Sergii Kryshtop
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Matt Raible
Acceptance testing in php with Codeception - Techmeetup Edinburgh
Acceptance testing in php with Codeception - Techmeetup Edinburgh
Engineor
Anatomy of a Build Pipeline
Anatomy of a Build Pipeline
Samuel Brown
Open shift 4-update
Open shift 4-update
SaeidVarmazyar
Scorex, the Modular Blockchain Framework
Scorex, the Modular Blockchain Framework
Alex Chepurnoy
Revolutionizing the cloud with container virtualization
Revolutionizing the cloud with container virtualization
WSO2
UiPath Devops.pptx
UiPath Devops.pptx
Rohit Radhakrishnan
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
Microsoft
Fluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
Miguel Zuniga
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
Jitendra Bafna
Using Red Hat JBoss Fuse on OpenShift
Using Red Hat JBoss Fuse on OpenShift
Kenneth Peeples
HPC on OpenStack
HPC on OpenStack
Erich Birngruber
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 3
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 3
Alfonso Martino
Release with confidence
Release with confidence
John Congdon
Cloud Platform Symantec Meetup Nov 2014
Cloud Platform Symantec Meetup Nov 2014
Miguel Zuniga
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
Mark Opanasiuk
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
Samy Fodil
More Related Content
Similar to JCConf2022 Using ArchUnit to test your architecture
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Anurag Dwivedi
Implementing CI CD UiPath Using Jenkins Plugin
Implementing CI CD UiPath Using Jenkins Plugin
Satish Prasad
Apache Cloudstack QA Strategy
Apache Cloudstack QA Strategy
Sudha R Ponnaganti
Build server
Build server
Christophe Vanlancker
AzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release Management
Sergii Kryshtop
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Matt Raible
Acceptance testing in php with Codeception - Techmeetup Edinburgh
Acceptance testing in php with Codeception - Techmeetup Edinburgh
Engineor
Anatomy of a Build Pipeline
Anatomy of a Build Pipeline
Samuel Brown
Open shift 4-update
Open shift 4-update
SaeidVarmazyar
Scorex, the Modular Blockchain Framework
Scorex, the Modular Blockchain Framework
Alex Chepurnoy
Revolutionizing the cloud with container virtualization
Revolutionizing the cloud with container virtualization
WSO2
UiPath Devops.pptx
UiPath Devops.pptx
Rohit Radhakrishnan
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
Microsoft
Fluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
Miguel Zuniga
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
Jitendra Bafna
Using Red Hat JBoss Fuse on OpenShift
Using Red Hat JBoss Fuse on OpenShift
Kenneth Peeples
HPC on OpenStack
HPC on OpenStack
Erich Birngruber
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 3
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 3
Alfonso Martino
Release with confidence
Release with confidence
John Congdon
Cloud Platform Symantec Meetup Nov 2014
Cloud Platform Symantec Meetup Nov 2014
Miguel Zuniga
Similar to JCConf2022 Using ArchUnit to test your architecture
(20)
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Implementing CI CD UiPath Using Jenkins Plugin
Implementing CI CD UiPath Using Jenkins Plugin
Apache Cloudstack QA Strategy
Apache Cloudstack QA Strategy
Build server
Build server
AzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release Management
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Acceptance testing in php with Codeception - Techmeetup Edinburgh
Acceptance testing in php with Codeception - Techmeetup Edinburgh
Anatomy of a Build Pipeline
Anatomy of a Build Pipeline
Open shift 4-update
Open shift 4-update
Scorex, the Modular Blockchain Framework
Scorex, the Modular Blockchain Framework
Revolutionizing the cloud with container virtualization
Revolutionizing the cloud with container virtualization
UiPath Devops.pptx
UiPath Devops.pptx
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
Fluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
Using Red Hat JBoss Fuse on OpenShift
Using Red Hat JBoss Fuse on OpenShift
HPC on OpenStack
HPC on OpenStack
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 3
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 3
Release with confidence
Release with confidence
Cloud Platform Symantec Meetup Nov 2014
Cloud Platform Symantec Meetup Nov 2014
Recently uploaded
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
Mark Opanasiuk
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
Samy Fodil
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
FIDO Alliance
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
FIDO Alliance
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
中 央社
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
IES VE
The Metaverse: Are We There Yet?
The Metaverse: Are We There Yet?
Mark Billinghurst
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
Stephen Perrenod
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
marcuskenyatta275
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Leah Henrickson
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
FIDO Alliance
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
FIDO Alliance
Working together SRE & Platform Engineering
Working together SRE & Platform Engineering
Marcus Vechiato
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
GDSC PJATK
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
Memoori
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Exakis Nelite
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
Hiroshi SHIBATA
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Stefan Dietze
Overview of Hyperledger Foundation
Overview of Hyperledger Foundation
Hyperleger Tokyo Meetup
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
FIDO Alliance
Recently uploaded
(20)
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
The Metaverse: Are We There Yet?
The Metaverse: Are We There Yet?
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Working together SRE & Platform Engineering
Working together SRE & Platform Engineering
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Overview of Hyperledger Foundation
Overview of Hyperledger Foundation
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
JCConf2022 Using ArchUnit to test your architecture
1.
Using ArchUnit to test
your architecture Matt Ho
2.
About me - Hi,
I'm Matt 👋 - 松凌科技 Architect / R&D - JCConf Speaker - methodho@gmail.com - https://github.com/shihyuho
3.
放⼼, 這不是在講架構
4.
本節在分享 架構已經在那了 && 該如何確保在持續開發/維運的過程中, 應⽤程式仍 然遵循著架構走
5.
https://www.archunit.org/
6.
ArchUnit Overview - 是⼀個測試套件,
整合了 JUnit 4, JUnit 5 等 - 良好的 Fluent API - 容易延伸擴充 - Apache-2.0 license
7.
運作過程
8.
起⼿式 決定從哪邊開始匯入 bytecodes
9.
起⼿式 定義 Rules
10.
起⼿式 ArchUnit 執⾏得到結果
11.
起⼿式 - Rule
Pattern ArchRuleDefinition.GIVEN_OBJECTS .that(). PREDICATE .should(). CONDITION
12.
Controller 命名必須以 ‘Controller’
結尾 Class Naming
13.
Controller 命名必須以 ‘Controller’
結尾 Class Naming
14.
Class Naming Controller 命名必須以
‘Controller’ 結尾
15.
Class Naming Data Access
命名必須以 ‘Dao’ 結尾
16.
Class Naming Data Access
命名必須以 ‘Dao’ 結尾
17.
Class Naming Data Access
命名必須以 ‘Dao’ 結尾
18.
Layered
19.
Layered
20.
Layered
21.
Layered
22.
Layered Architectures.layeredArchitecture() .layer(). PREDICATE .whereLayer(). CONDITION
23.
Layered 定義 3 層
layer 定義依賴關係
24.
General
25.
Freeze - 套⽤在舊的系統中, 超多條違規改不動
;-(
26.
Freeze - 套⽤在舊的系統中, 超多條違規改不動
;-( - 好吧, 那就現在開始的程式才檢查 :-)
27.
Freeze - 套⽤在舊的系統中, 超多條違規改不動
;-( - 好吧, 那就現在開始的程式才檢查 :-) FreezingArchRule.freeze( ArchRuleDefinition.GIVEN_OBJECTS .that(). PREDICATE .should(). CONDITION )
28.
Freeze
29.
Code Smells
30.
Long Parameter List https://refactoring.guru/smells/long-parameter-list
31.
Large Class https://refactoring.guru/smells/large-class
32.
Long Method https://refactoring.guru/smells/long-method
33.
Recap - 起⼿式 - Naming
Rules - Layers Rules - General Rules - Freezing Rules - Custom Rules - Code Smells
34.
Thank you 🙌
Download now