From 24a90adbb9439f15afb93dab086e397c34e9e819 Mon Sep 17 00:00:00 2001 From: Kamil Grzybek Date: Sun, 24 Nov 2019 23:35:03 +0100 Subject: [PATCH] Update README - add 3.12 Architecture Unit Tests, NetArchTest to technologies and article to Testing --- README.md | 17 +++++++++++++++++ docs/Images/architecture_unit_tests.png | Bin 0 -> 53528 bytes 2 files changed, 17 insertions(+) create mode 100644 docs/Images/architecture_unit_tests.png diff --git a/README.md b/README.md index 4e189534..ceb43397 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,8 @@ Full Modular Monolith .NET application with Domain-Driven Design approach.   [3.11 Architecture Decision Log](#311-architecture-decision-log) +  [3.12 Architecture Unit Tests](#312-architecture-unit-tests) + [4. Technology](#4-technology) [5. How to Run](#5-how-to-run) @@ -941,6 +943,19 @@ All Architectural Decisions (AD) are documented in the [Architecture Decision Lo More information about documenting architecture-related decisions in this way : [https://github.com/joelparkerhenderson/architecture_decision_record](https://github.com/joelparkerhenderson/architecture_decision_record) +### 3.12 Architecture Unit Tests + +In some cases it is not possible to enforce the application architecture, design or established conventions using compiler (compile-time). For this reason, code implementations can diverge from the original design and architecture. We want to minimize this behavior, not only by code review.
+ +To do this, unit tests of system architecture, design, major conventions and assumptions have been written. In .NET there is special library for this task: [NetArchTest](https://github.com/BenMorris/NetArchTest). This library has been written based on the very popular JAVA architecture unit tests library - [ArchUnit](https://www.archunit.org/).
+ +Using this kind of tests we can test proper layering of our application, dependencies, encapsulation, immutability, DDD correct implementation, naming, conventions and so on - everything what we need to test. Example:
+ +![](docs/Images/architecture_unit_tests.png) + +More information about architecture unit tests here: [https://blogs.oracle.com/javamagazine/unit-test-your-architecture-with-archunit](https://blogs.oracle.com/javamagazine/unit-test-your-architecture-with-archunit) + + ## 4. Technology List of technologies, frameworks and libraries used for implementation: @@ -962,6 +977,7 @@ List of technologies, frameworks and libraries used for implementation: - [NUnit](https://nunit.org/) (Testing framework) - [NSubstitute](https://nsubstitute.github.io/) (Testing isolation framework) - [Visual Paradigm Community Edition](https://www.visual-paradigm.com/download/community.jsp) (CASE tool for modeling and documentation) +- [NetArchTest](https://github.com/BenMorris/NetArchTest) (Architecture Unit Tests library) ## 5. How to Run @@ -1103,6 +1119,7 @@ The project is under [MIT license](https://opensource.org/licenses/MIT). ### Testing - ["The Art of Unit Testing: with examples in C#"](https://www.amazon.com/Art-Unit-Testing-examples/dp/1617290890) book, Roy Osherove +- ["Unit Test Your Architecture with ArchUnit"](https://blogs.oracle.com/javamagazine/unit-test-your-architecture-with-archunit) article, Jonas Havers ### UML - ["UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition)"](https://www.amazon.com/UML-Distilled-Standard-Modeling-Language/dp/0321193687) book, Martin Fowler diff --git a/docs/Images/architecture_unit_tests.png b/docs/Images/architecture_unit_tests.png new file mode 100644 index 0000000000000000000000000000000000000000..3321b45e8b6d8a71e12631a7089f2dd3ce8cf5df GIT binary patch literal 53528 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

XTWaB> z2n52L1P<%8w$2lfc+TKjbHZzuPjdG=SR8nw-9%7}16AKi!kA>-pe<5UN=-Q~a^94k z1}E>h_Njw6C9|a$RWZGtJ?LA<+EmNXA1W6$C9d^tv zMcoPzJeOP(g$3i*yKSr1JsFct>}(f$3E!3X^}LPXBE4})kDO&g=<-d_8@HI9V(435 zTN)ov-@ct!rxMyzY#&;cJ>Z=@2j)uCsn@s%Y*pd)3;>wbzLD`klx+UbVGI}wKPI;c zYE1~VBbYH_Og6L=f9xokVudc%M|1(g5g;|=<)CC;?z_p6%Ol>dV5XvhV94_Dkp(sN zf-8N!Wc;lp>OK8WB@qtfHAd{wo6l^vLop`RY_yZueP`quc*=q=l@#{gy(;G>8U~h= zST0_o9B8|Cf=DBZzz&1u#ajsS-xNn0;r%#$PY@K{luQ zF6t%4#($eG87c`fKI=)2N|>Qud!2KJ-?V$8D|6avVS^_fM}?175}uSX$3^7jr~e89 z)$kEU#tdy^9pqQ`4$1s$T$cniLZfh zNN1nV>x#a7lYa%f#{E!T$gQwVy|spz1ZY{07TLszvqDXM}JdH%$H@oVz-iMr9pIy zFrh~6gML5LTVTZH;HPB_w%__0A-cD4`$H+nnoQNdZAu)*!a`_n+MyXF819Pj?rO0y%@K2q?vzbVD$| z#G!7AJajuPjU+r}+Z&vsjri7Zg#ED?)>|Kk_zy8R;^7gHU845fYFa_gPG*@VT4fU# z8XQka5-T6Fp_GmA$kwXy@xv6j@t%KFRW}D1^;VHFrNu>je`nsCP9HMEnBV0=dE!_tI)YkEC1Mp9F8su~a`kiHGlnB&snEp2HG7p0 zvaZ|n-F`F}av8?BGo|dGpfF(&WFPQ?*Jwv>HZ3;}u(vn=HmSq6&wZr)L(WRF(#+n# zzAasjs5n`a8S59-7?zX^?!Ve7x^6^r_XKK6$syzuiY$}Y)_V2ID8;@qkiJ|qr>N@O zJIjIli>#sV&z(jaFK}fHQ5ANeNY~!Rl*p;uc{cSePteIX9<|?@$TJ&PYvaP27M|gX z80gE?<@&bfG-A}s_$ea*B>Tw#OR8f&*bq1I`@^Mphlh0w!JEkAHV-*mOIii$Wt-Ev zb<=gUvIPCb`O6JDGTvxEY!$NdH*)*tRzk>_B`%o0-W_gtwD1u(3C&7zU7H3o1nGaD zR$BO>lk(t{TZW|T(j|yk9;W7a*xKJFp7QRlW(uHym8fm=z^YlXV@RY*^c2&>I-gPjsm)*^R7aM7 zS6%p0CVy64<#G#B=-l=KC86?Kio1ki@2`R*Fe=uUgkSArr>OX|hkcDvOMGuvfA5`o_}02;^H%Jb!A05|6oJy-j+ICQH>HYR*;Or}2({XS zr9IVySXd?hjT}tpd^)b|)F&c7Wer_qcJ$m$QqtHjPu zRo=hqU_qH;BD_}vPAj^v84&-&!^k-?fSs_$KgY@*21v_S|7SC>cXlejxg;OHAr3ut zRnNUApjPRBIXg+{70HtOTF|q>u%yeTGOQRJ^rE-vM(s`s4fQ|fJPVI5d@)mxxc&s5 znvKpDzx%2}K{F7lxUc>2u~0~qZ27ntF-yE?x}yHmXYncycgd;@|HNL=r|%ERu9g^pnAs2U z$1d64d>aZv^o&LA7k*mO<>x@E-f1-kx@xSvr_G~00)nR$r2=RzuX?BZdi*985f=3o z@y3%N;nwMl&CYls35Y-KH5q6J@9bU(kbiqcs9e4wTQMnf_(}-4cK|<9VsfG-!g}8S E2Vq@Lc>n+a literal 0 HcmV?d00001