A C# library for specifying and asserting architecture rules in automated tests, based on ArchUnit for Java.
ArchUnitNET is a C# architecture test library that allows developers to specify and assert architectural rules in their codebase through automated tests. It helps enforce coding standards, layer dependencies, and design patterns by analyzing compiled assemblies and validating them against defined constraints. This prevents architectural drift and ensures code consistency across projects.
C# developers and software architects working on medium to large codebases who need to maintain architectural integrity and enforce coding standards through automated testing.
Developers choose ArchUnitNET for its fluent API, seamless integration with popular .NET test frameworks, and its proven approach ported from the Java ArchUnit ecosystem. It provides a specialized, lightweight way to codify architecture rules that traditional unit tests cannot easily cover.
A C# architecture test library to specify and assert architecture rules in C# for automated testing.
Provides an intuitive, chainable syntax for defining architecture rules, as shown with methods like That().ResideInNamespace() in the README, making complex conditions easy to compose.
Offers dedicated NuGet packages for xUnit, NUnit, and MSTestV2, allowing architecture tests to run seamlessly alongside standard unit tests without additional setup.
Analyzes compiled C# assemblies to build a detailed code structure, enabling validation of dependencies between classes, members, and interfaces for thorough architecture checks.
Supports combining multiple rules and adding descriptive failure reasons, as demonstrated in the example, which aids in debugging and identifying specific architectural violations.
The README explicitly recommends running tests in Debug configuration for accuracy, which can conflict with testing strategies that prioritize Release builds or optimized pipelines.
Loading and analyzing multiple assemblies during test execution can slow down tests, especially for large codebases, impacting CI/CD pipeline efficiency and developer feedback loops.
Since it inspects bytecode, it cannot capture runtime dependencies or dynamic code behaviors, such as reflection-based calls, potentially missing issues that only occur during execution.
A PHP parser written in PHP
:sparkles: Monorepo for all the tooling which enables ESLint to support TypeScript
Static Type Checker for Python
:card_index: A simple fake data generator for C#, F#, and VB.NET. Based on and ported from the famed faker.js.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.