All Projects → mod-enter → archunit-junit5-kotlin

mod-enter / archunit-junit5-kotlin

Licence: MIT License
Generic Architecture Tests written in Kotlin using ArchUnit and Junit5

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to archunit-junit5-kotlin

Domain Driven Hexagon
Guide on Domain-Driven Design, software architecture, design patterns, best practices etc.
Stars: ✭ 4,417 (+19977.27%)
Mutual labels:  architecture, clean-architecture, onion-architecture, hexagonal-architecture, architectural-patterns
DDD
Domain-Driven Design example
Stars: ✭ 116 (+427.27%)
Mutual labels:  onion-architecture, hexagonal-architecture, ports-and-adapters
Library
This is a project of a library, driven by real business requirements. We use techniques strongly connected with Domain Driven Design, Behavior-Driven Development, Event Storming, User Story Mapping.
Stars: ✭ 2,685 (+12104.55%)
Mutual labels:  hexagonal-architecture, ports-and-adapters, archunit
awesome-software-architecture
A curated list of awesome articles, videos, and other resources to learn and practice software architecture, patterns, and principles.
Stars: ✭ 1,594 (+7145.45%)
Mutual labels:  clean-architecture, onion-architecture, architectural-patterns
Clean Architecture Manga
🌀 Clean Architecture with .NET6, C#10 and React+Redux. Use cases as central organizing structure, completely testable, decoupled from frameworks
Stars: ✭ 3,104 (+14009.09%)
Mutual labels:  clean-architecture, onion-architecture, hexagonal-architecture
archunit-examples
ArchUnit examples for a ports-and-adapters application architecture inside a Spring Boot book-catalog application
Stars: ✭ 31 (+40.91%)
Mutual labels:  architecture, ports-and-adapters, archunit
OnionArchitecture
The onion architecture, introduced by Jeffrey Palermo, overcomes the issues of the layered architecture with great ease. With Onion Architecture, the game-changer is that the Domain Layer (Entities and Validation Rules that are common to the business case ) is at the Core of the Entire Application. This means higher flexibility and lesser coupli…
Stars: ✭ 314 (+1327.27%)
Mutual labels:  clean-architecture, onion-architecture
onion-architecture
My Java implementation example of onion architecture
Stars: ✭ 52 (+136.36%)
Mutual labels:  clean-architecture, onion-architecture
poem-hexagon
A simple example for a hexagonal architecture.
Stars: ✭ 33 (+50%)
Mutual labels:  clean-architecture, hexagonal-architecture
toggl-google-sheet
Import Toggl time entries into a Google Sheet
Stars: ✭ 17 (-22.73%)
Mutual labels:  hexagonal-architecture, ports-and-adapters
cloud-native-hexagonal-node
A cloud native node microservice boilerplate based on the hexagonal architecture
Stars: ✭ 26 (+18.18%)
Mutual labels:  clean-architecture, hexagonal-architecture
kingdom-python-server
Modular, cohesive, transparent and fast web server template
Stars: ✭ 20 (-9.09%)
Mutual labels:  hexagonal-architecture, ports-and-adapters
archifacts
archifacts is a library to extract your architectural concepts out of your application's code
Stars: ✭ 40 (+81.82%)
Mutual labels:  architecture, archunit
bian
The Banking Industry Architecture Network e.V. (BIAN) model in Archimate 3
Stars: ✭ 48 (+118.18%)
Mutual labels:  architecture, architectural-patterns
frontend-clean-architecture
React + TypeScript app built using the clean architecture principles in a more functional way · 🧼 🏛 🍪
Stars: ✭ 1,816 (+8154.55%)
Mutual labels:  clean-architecture, onion-architecture
financial
POC de uma aplicação de domínio financeiro.
Stars: ✭ 62 (+181.82%)
Mutual labels:  clean-architecture, hexagonal-architecture
repository
[PHP 7] Implementation and definition of a base Repository in Domain land.
Stars: ✭ 26 (+18.18%)
Mutual labels:  clean-architecture, hexagonal-architecture
educational-platform
Modular Monolith Java application with DDD
Stars: ✭ 124 (+463.64%)
Mutual labels:  clean-architecture, hexagonal-architecture
bitcoin-market-android
Bitcoin Market app shows you the current Bitcoin market price and price chart of different time intervals 💰
Stars: ✭ 284 (+1190.91%)
Mutual labels:  architecture, clean-architecture
from-fat-controllers-to-use-cases
Rails (API) app that shows different kinds of architecture (one per commit), and in the last one, how to use the Micro::Case gem to handle the application business logic.
Stars: ✭ 74 (+236.36%)
Mutual labels:  architecture, clean-architecture

Generic Architecture Tests with ArchUnit

This repository shows generic examples for architecture tests using ArchUnit. The tests are written in Kotlin using the Junit5 testing framework.

Onion Architecture

The term onion architecture was first used by Jeffrey Palermo in his onion architecture blog post. Other names for similar architectural approaches are hexagonal architecture, ports and adapters, and clean architecture.

We built ArchUnit tests for this architectural style in the OnionArchitectureTest.kt file. It assumes a certain structure of all classes in the root package, i.e. the package of the OnionArchitectureTest class:

  • The core domain should be placed in the domain package. It contains the code logic of the application and is is independent of the infrastructure, adapters, frameworks in use, etc. We divide the package into two parts:
    • The domain.model package contains all models of the domain. Classes in this package do not have any dependencies to any other classes in the root package.
    • The domain.service package contains all logic of the domain. Classes in this package use the classes in domain.model package but do not have any dependencies to any other classes in the root package.
  • All application related parts, i.e. technical logic needed for the application to run and that are not part of the core domain, should be placed in the application package. Examples are global settings for date and time, e.g. a global Clock object, or security related configuration that is not part of an individual adapter. Classes in this package can access the domain package but do not depend on any other classes in the root package.
  • All external dependencies are placed in dedicated adapter packages. Examples are an adapter.persistence package that contains logic for storing and retrieving data from a data store or adapter.cli and adapter.rest packages for user interactions with the application. Classes in any adapter package can access all classes in the domain and application package but must not have dependencies on any other adapter packages.

Note that the example code in the onion package contain code that breaks the build. Uncomment the corresponding parts to make the tests pass.

Usage and Contribution

Let us know if you like ArchUnit and use the templates in this repository by leaving a tweet mentioning @archtests and @spanier_m.

If you want to change parts of these examples, simply open a pull request with the changes and/or open an issue.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].