From 67edc539794d80ac2ab9db8ca400b2c2c470351b Mon Sep 17 00:00:00 2001 From: Malte Kunath Date: Fri, 28 Aug 2026 18:35:55 +0200 Subject: [PATCH 1/3] chore(deps): update TUnit package to version 0.90.45 for TUnitTests Signed-off-by: Malte Kunath --- ArchUnitNET.TUnitTests/ArchUnitNET.TUnitTests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ArchUnitNET.TUnitTests/ArchUnitNET.TUnitTests.csproj b/ArchUnitNET.TUnitTests/ArchUnitNET.TUnitTests.csproj index cae1b1a73..78b061def 100644 --- a/ArchUnitNET.TUnitTests/ArchUnitNET.TUnitTests.csproj +++ b/ArchUnitNET.TUnitTests/ArchUnitNET.TUnitTests.csproj @@ -10,7 +10,7 @@ - + From b5673ab42c92ab0d4f1a2c4f45a24c1df05e386f Mon Sep 17 00:00:00 2001 From: Malte Kunath Date: Fri, 28 Aug 2026 21:23:46 +0200 Subject: [PATCH 2/3] ci: split "run tests" step into TUnit part (using MTP) and non-TUnit tests (using VSTest) via solution filter file Signed-off-by: Malte Kunath --- .github/workflows/build.yaml | 3 +++ ArchUnit.TestsWithoutTUnit.slnf | 15 +++++++++++++++ ArchUnit.sln | 21 ++++++++++++++++++++- ArchUnitNET.TUnitTests/global.json | 10 ++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 ArchUnit.TestsWithoutTUnit.slnf create mode 100644 ArchUnitNET.TUnitTests/global.json diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f7ea51440..8cc5fe481 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -62,6 +62,9 @@ jobs: with: cache: false - name: Run tests + run: dotnet test -c Debug ArchUnit.TestsWithoutTUnit.slnf + - name: Run TUnit tests + working-directory: ./ArchUnitNET.TUnitTests run: dotnet test -c Debug publish-docs: name: Publish documentation diff --git a/ArchUnit.TestsWithoutTUnit.slnf b/ArchUnit.TestsWithoutTUnit.slnf new file mode 100644 index 000000000..17f0d9345 --- /dev/null +++ b/ArchUnit.TestsWithoutTUnit.slnf @@ -0,0 +1,15 @@ +{ + "solution": { + "path": "ArchUnit.sln", + "projects": [ + "ArchUnitNET.NUnitTests\\ArchUnitNET.NUnitTests.csproj", + "ArchUnitNETTests\\ArchUnitNETTests.csproj", + "ArchUnitNET.MSTestV3Tests\\ArchUnitNET.MSTestV3Tests.csproj", + "ArchUnitNET.xUnitV3Tests\\ArchUnitNET.xUnitV3Tests.csproj", + "ArchUnitNET.MSTestV4Tests\\ArchUnitNET.MSTestV4Tests.csproj", + "ExampleTest\\ExampleTest.csproj", + "ArchUnitNET.MSTestV2Tests\\ArchUnitNET.MSTestV2Tests.csproj", + "ArchUnitNET.xUnitTests\\ArchUnitNET.xUnitTests.csproj" + ] + } +} diff --git a/ArchUnit.sln b/ArchUnit.sln index 5f7c40a35..66c92acb2 100644 --- a/ArchUnit.sln +++ b/ArchUnit.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 18 -VisualStudioVersion = 18.7.11925.98 stable +VisualStudioVersion = 18.7.11925.98 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestAssembly", "TestAssembly\TestAssembly.csproj", "{7DEF5F34-AB86-457B-819D-5E7387B3FF87}" EndProject @@ -67,10 +67,27 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SlicesTestAssembly", "TestA EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A780B3D6-C525-4270-ABF1-63BA65EA1593}" ProjectSection(SolutionItems) = preProject + ArchUnit.TestsWithoutTUnit.slnf = ArchUnit.TestsWithoutTUnit.slnf README.md = README.md renovate.json = renovate.json EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{38699834-8620-4254-AB98-C19586AD3952}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{5B3E7A23-F91B-4506-9879-B8CAD13F4AE0}" + ProjectSection(SolutionItems) = preProject + .github\workflows\build.yaml = .github\workflows\build.yaml + .github\workflows\codeql.yml = .github\workflows\codeql.yml + .github\workflows\label-issues.yaml = .github\workflows\label-issues.yaml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ISSUE_TEMPLATE", "ISSUE_TEMPLATE", "{84BF2DBC-C8FA-46CE-9419-1CE4E3C4D175}" + ProjectSection(SolutionItems) = preProject + .github\ISSUE_TEMPLATE\bug_report.yml = .github\ISSUE_TEMPLATE\bug_report.yml + .github\ISSUE_TEMPLATE\config.yml = .github\ISSUE_TEMPLATE\config.yml + .github\ISSUE_TEMPLATE\feature_request.yml = .github\ISSUE_TEMPLATE\feature_request.yml + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -459,6 +476,8 @@ Global {1D0187EB-9D04-4CF3-AE63-0C0E97FCB49C} = {B1191F18-91CB-4387-B775-A5EB64D3AC30} {2C04EB93-5AE0-474C-B328-145A734A5E2B} = {B1191F18-91CB-4387-B775-A5EB64D3AC30} {E421FA12-BBB9-4A8B-BD29-8757836079A5} = {B1191F18-91CB-4387-B775-A5EB64D3AC30} + {5B3E7A23-F91B-4506-9879-B8CAD13F4AE0} = {38699834-8620-4254-AB98-C19586AD3952} + {84BF2DBC-C8FA-46CE-9419-1CE4E3C4D175} = {38699834-8620-4254-AB98-C19586AD3952} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D1A8274D-32D6-44DB-9BB3-1A5B273709AF} diff --git a/ArchUnitNET.TUnitTests/global.json b/ArchUnitNET.TUnitTests/global.json new file mode 100644 index 000000000..534cb6bd0 --- /dev/null +++ b/ArchUnitNET.TUnitTests/global.json @@ -0,0 +1,10 @@ +{ + "sdk": { + "version": "10.0.400", + "rollForward": "latestMajor", + "allowPrerelease": true + }, + "test": { + "runner": "Microsoft.Testing.Platform" + } +} From 3e6765f1a1cc631623d9d887a28e7720ffd46ff9 Mon Sep 17 00:00:00 2001 From: Malte Kunath Date: Fri, 25 Sep 2026 18:53:20 +0200 Subject: [PATCH 3/3] ci: use mise tasks for parallel VSTest/MTP test execution Replace ArchUnit.TestsWithoutTUnit.slnf with ArchUnitNET.vstest.slnf and ArchUnitNET.mtp.slnf, add mise tasks (test:vstest, test:mtp, test) that run both groups in parallel, and simplify the CI workflow to a single `mise run test` step. Signed-off-by: Malte Kunath --- .github/workflows/build.yaml | 5 +---- ArchUnit.TestsWithoutTUnit.slnf | 15 --------------- ArchUnit.sln | 3 ++- ArchUnitNET.mtp.slnf | 8 ++++++++ ArchUnitNET.vstest.slnf | 15 +++++++++++++++ mise.toml | 13 +++++++++++++ 6 files changed, 39 insertions(+), 20 deletions(-) delete mode 100644 ArchUnit.TestsWithoutTUnit.slnf create mode 100644 ArchUnitNET.mtp.slnf create mode 100644 ArchUnitNET.vstest.slnf diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 8cc5fe481..953ed682a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -62,10 +62,7 @@ jobs: with: cache: false - name: Run tests - run: dotnet test -c Debug ArchUnit.TestsWithoutTUnit.slnf - - name: Run TUnit tests - working-directory: ./ArchUnitNET.TUnitTests - run: dotnet test -c Debug + run: mise run test publish-docs: name: Publish documentation runs-on: ubuntu-latest diff --git a/ArchUnit.TestsWithoutTUnit.slnf b/ArchUnit.TestsWithoutTUnit.slnf deleted file mode 100644 index 17f0d9345..000000000 --- a/ArchUnit.TestsWithoutTUnit.slnf +++ /dev/null @@ -1,15 +0,0 @@ -{ - "solution": { - "path": "ArchUnit.sln", - "projects": [ - "ArchUnitNET.NUnitTests\\ArchUnitNET.NUnitTests.csproj", - "ArchUnitNETTests\\ArchUnitNETTests.csproj", - "ArchUnitNET.MSTestV3Tests\\ArchUnitNET.MSTestV3Tests.csproj", - "ArchUnitNET.xUnitV3Tests\\ArchUnitNET.xUnitV3Tests.csproj", - "ArchUnitNET.MSTestV4Tests\\ArchUnitNET.MSTestV4Tests.csproj", - "ExampleTest\\ExampleTest.csproj", - "ArchUnitNET.MSTestV2Tests\\ArchUnitNET.MSTestV2Tests.csproj", - "ArchUnitNET.xUnitTests\\ArchUnitNET.xUnitTests.csproj" - ] - } -} diff --git a/ArchUnit.sln b/ArchUnit.sln index 66c92acb2..17553d687 100644 --- a/ArchUnit.sln +++ b/ArchUnit.sln @@ -67,7 +67,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SlicesTestAssembly", "TestA EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A780B3D6-C525-4270-ABF1-63BA65EA1593}" ProjectSection(SolutionItems) = preProject - ArchUnit.TestsWithoutTUnit.slnf = ArchUnit.TestsWithoutTUnit.slnf + ArchUnitNET.mtp.slnf = ArchUnitNET.mtp.slnf + ArchUnitNET.vstest.slnf = ArchUnitNET.vstest.slnf README.md = README.md renovate.json = renovate.json EndProjectSection diff --git a/ArchUnitNET.mtp.slnf b/ArchUnitNET.mtp.slnf new file mode 100644 index 000000000..f6877b688 --- /dev/null +++ b/ArchUnitNET.mtp.slnf @@ -0,0 +1,8 @@ +{ + "solution": { + "path": "ArchUnit.sln", + "projects": [ + "ArchUnitNET.TUnitTests\\ArchUnitNET.TUnitTests.csproj" + ] + } +} diff --git a/ArchUnitNET.vstest.slnf b/ArchUnitNET.vstest.slnf new file mode 100644 index 000000000..11deb6133 --- /dev/null +++ b/ArchUnitNET.vstest.slnf @@ -0,0 +1,15 @@ +{ + "solution": { + "path": "ArchUnit.sln", + "projects": [ + "ArchUnitNET.NUnitTests\\ArchUnitNET.NUnitTests.csproj", + "ArchUnitNETTests\\ArchUnitNETTests.csproj", + "ArchUnitNET.MSTestV3Tests\\ArchUnitNET.MSTestV3Tests.csproj", + "ArchUnitNET.xUnitV3Tests\\ArchUnitNET.xUnitV3Tests.csproj", + "ArchUnitNET.MSTestV4Tests\\ArchUnitNET.MSTestV4Tests.csproj", + "ExampleTest\\ExampleTest.csproj", + "ArchUnitNET.MSTestV2Tests\\ArchUnitNET.MSTestV2Tests.csproj", + "ArchUnitNET.xUnitTests\\ArchUnitNET.xUnitTests.csproj" + ] + } +} diff --git a/mise.toml b/mise.toml index c8e5ee1a3..aaa884a89 100644 --- a/mise.toml +++ b/mise.toml @@ -25,3 +25,16 @@ description = "Restore local .NET tools (csharpier, verify.tool, reportgenerator sources = [".config/dotnet-tools.json"] run = "dotnet tool restore" auto = true + +[tasks."test:vstest"] +description = "Run all VSTest-based test projects" +run = "dotnet test -c Debug ArchUnitNET.vstest.slnf" + +[tasks."test:mtp"] +description = "Run the TUnit (MTP) test project" +dir = "ArchUnitNET.TUnitTests" +run = "dotnet test -c Debug ../ArchUnitNET.mtp.slnf" + +[tasks.test] +description = "Run all tests (VSTest and MTP in parallel)" +depends = ["test:vstest", "test:mtp"]