From eba34733a540f8384493cfa3a0a99ad2cccde247 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Wed, 12 Nov 2025 23:08:10 +0000 Subject: [PATCH 01/17] chore(deps): update dependency microsoft.build.utilities.core to v18 (#3817) Co-authored-by: Renovate Bot --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index acd52ae7d7..b554cb962f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -20,7 +20,7 @@ - + From 78676fa2b57072df8f3073133863b18400e05fad Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Wed, 12 Nov 2025 23:26:25 +0000 Subject: [PATCH 02/17] chore: add 'ignore-for-release' label to speed-comparison.yml (#3820) --- .github/workflows/speed-comparison.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/speed-comparison.yml b/.github/workflows/speed-comparison.yml index 7a551189bb..27c762a3e4 100644 --- a/.github/workflows/speed-comparison.yml +++ b/.github/workflows/speed-comparison.yml @@ -326,6 +326,7 @@ jobs: automated benchmarks documentation + ignore-for-release draft: false - name: Merge PR Immediately From c958b786bf330ddb63a6ef7a26ef7b949514c727 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Wed, 12 Nov 2025 23:29:15 +0000 Subject: [PATCH 03/17] chore(deps): update dependency benchmarkdotnet to 0.15.7 (#3818) Co-authored-by: Renovate Bot --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index b554cb962f..a12962d148 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -7,7 +7,7 @@ - + From d27cf3b26b7fe97b0aecbdbe7e43deccc4ae2ab1 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Thu, 13 Nov 2025 00:03:30 +0000 Subject: [PATCH 04/17] chore(deps): update dependency benchmarkdotnet.annotations to 0.15.7 (#3819) Co-authored-by: Renovate Bot --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index a12962d148..2f726aef4a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -8,7 +8,7 @@ - + From f8663e012265d923bd9356d60d69820d3c0f5171 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Thu, 13 Nov 2025 00:28:52 +0000 Subject: [PATCH 05/17] chore: update benchmark results (#3822) --- docs/docs/benchmarks/AsyncTests.md | 18 +- docs/docs/benchmarks/BuildTime.md | 14 +- docs/docs/benchmarks/DataDrivenTests.md | 18 +- docs/docs/benchmarks/MassiveParallelTests.md | 18 +- docs/docs/benchmarks/MatrixTests.md | 18 +- docs/docs/benchmarks/ScaleTests.md | 18 +- docs/docs/benchmarks/SetupTeardownTests.md | 16 +- docs/docs/benchmarks/index.md | 6 +- docs/static/benchmarks/AsyncTests.json | 44 +-- docs/static/benchmarks/BuildTime.json | 36 +-- docs/static/benchmarks/DataDrivenTests.json | 44 +-- .../benchmarks/MassiveParallelTests.json | 44 +-- docs/static/benchmarks/MatrixTests.json | 44 +-- docs/static/benchmarks/ScaleTests.json | 44 +-- .../static/benchmarks/SetupTeardownTests.json | 36 +-- docs/static/benchmarks/historical.json | 4 + docs/static/benchmarks/latest.json | 270 +++++++++--------- docs/static/benchmarks/summary.json | 2 +- 18 files changed, 349 insertions(+), 345 deletions(-) diff --git a/docs/docs/benchmarks/AsyncTests.md b/docs/docs/benchmarks/AsyncTests.md index 311679bb5a..2657a3eaac 100644 --- a/docs/docs/benchmarks/AsyncTests.md +++ b/docs/docs/benchmarks/AsyncTests.md @@ -7,7 +7,7 @@ sidebar_position: 2 # AsyncTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-12** from the latest CI run. +This benchmark was automatically generated on **2025-11-13** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 558.9 ms | 557.2 ms | 4.11 ms | -| NUnit | 4.4.0 | 650.2 ms | 649.0 ms | 9.00 ms | -| MSTest | 4.0.2 | 615.0 ms | 614.8 ms | 5.89 ms | -| xUnit3 | 3.2.0 | 702.4 ms | 702.4 ms | 7.09 ms | -| **TUnit (AOT)** | 1.1.0 | 123.8 ms | 123.9 ms | 0.46 ms | +| **TUnit** | 1.1.0 | 551.3 ms | 551.1 ms | 1.86 ms | +| NUnit | 4.4.0 | 639.4 ms | 634.6 ms | 10.77 ms | +| MSTest | 4.0.2 | 612.9 ms | 611.2 ms | 9.13 ms | +| xUnit3 | 3.2.0 | 692.8 ms | 692.6 ms | 5.81 ms | +| **TUnit (AOT)** | 1.1.0 | 122.7 ms | 122.8 ms | 0.41 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI xychart-beta title "AsyncTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 843 - bar [558.9, 650.2, 615, 702.4, 123.8] + y-axis "Time (ms)" 0 --> 832 + bar [551.3, 639.4, 612.9, 692.8, 122.7] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-12T21:13:20.516Z* +*Last generated: 2025-11-13T00:28:35.380Z* diff --git a/docs/docs/benchmarks/BuildTime.md b/docs/docs/benchmarks/BuildTime.md index bb58397fad..fde44e0ac3 100644 --- a/docs/docs/benchmarks/BuildTime.md +++ b/docs/docs/benchmarks/BuildTime.md @@ -7,7 +7,7 @@ sidebar_position: 8 # Build Performance Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-12** from the latest CI run. +This benchmark was automatically generated on **2025-11-13** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -18,10 +18,10 @@ Compilation time comparison across frameworks: | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 2.033 s | 2.032 s | 0.0296 s | -| Build_NUnit | 4.4.0 | 1.622 s | 1.615 s | 0.0216 s | -| Build_MSTest | 4.0.2 | 1.705 s | 1.701 s | 0.0231 s | -| Build_xUnit3 | 3.2.0 | 1.611 s | 1.613 s | 0.0248 s | +| **TUnit** | 1.1.0 | 2.100 s | 2.101 s | 0.0207 s | +| Build_NUnit | 4.4.0 | 1.688 s | 1.689 s | 0.0214 s | +| Build_MSTest | 4.0.2 | 1.731 s | 1.733 s | 0.0235 s | +| Build_xUnit3 | 3.2.0 | 1.648 s | 1.639 s | 0.0283 s | ## 📈 Visual Comparison @@ -60,7 +60,7 @@ xychart-beta title "Build Time Comparison" x-axis ["Build_TUnit", "Build_NUnit", "Build_MSTest", "Build_xUnit3"] y-axis "Time (s)" 0 --> 3 - bar [2.033, 1.622, 1.705, 1.611] + bar [2.1, 1.688, 1.731, 1.648] ``` --- @@ -69,4 +69,4 @@ xychart-beta View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-12T21:13:20.518Z* +*Last generated: 2025-11-13T00:28:35.383Z* diff --git a/docs/docs/benchmarks/DataDrivenTests.md b/docs/docs/benchmarks/DataDrivenTests.md index 539d7eaa2f..f09041fc89 100644 --- a/docs/docs/benchmarks/DataDrivenTests.md +++ b/docs/docs/benchmarks/DataDrivenTests.md @@ -7,7 +7,7 @@ sidebar_position: 3 # DataDrivenTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-12** from the latest CI run. +This benchmark was automatically generated on **2025-11-13** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 510.37 ms | 511.05 ms | 7.125 ms | -| NUnit | 4.4.0 | 583.06 ms | 583.47 ms | 17.581 ms | -| MSTest | 4.0.2 | 594.23 ms | 591.72 ms | 18.226 ms | -| xUnit3 | 3.2.0 | 604.34 ms | 605.85 ms | 7.447 ms | -| **TUnit (AOT)** | 1.1.0 | 25.55 ms | 25.62 ms | 0.241 ms | +| **TUnit** | 1.1.0 | 486.77 ms | 486.53 ms | 3.791 ms | +| NUnit | 4.4.0 | 589.92 ms | 591.78 ms | 12.153 ms | +| MSTest | 4.0.2 | 605.63 ms | 602.89 ms | 14.207 ms | +| xUnit3 | 3.2.0 | 600.41 ms | 597.06 ms | 10.504 ms | +| **TUnit (AOT)** | 1.1.0 | 24.05 ms | 24.05 ms | 0.239 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI xychart-beta title "DataDrivenTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 726 - bar [510.37, 583.06, 594.23, 604.34, 25.55] + y-axis "Time (ms)" 0 --> 727 + bar [486.77, 589.92, 605.63, 600.41, 24.05] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-12T21:13:20.516Z* +*Last generated: 2025-11-13T00:28:35.381Z* diff --git a/docs/docs/benchmarks/MassiveParallelTests.md b/docs/docs/benchmarks/MassiveParallelTests.md index 6f2c8a816f..3d5370e19a 100644 --- a/docs/docs/benchmarks/MassiveParallelTests.md +++ b/docs/docs/benchmarks/MassiveParallelTests.md @@ -7,7 +7,7 @@ sidebar_position: 4 # MassiveParallelTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-12** from the latest CI run. +This benchmark was automatically generated on **2025-11-13** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 625.5 ms | 626.8 ms | 7.61 ms | -| NUnit | 4.4.0 | 1,213.0 ms | 1,211.9 ms | 12.39 ms | -| MSTest | 4.0.2 | 3,010.8 ms | 3,010.4 ms | 12.63 ms | -| xUnit3 | 3.2.0 | 3,099.6 ms | 3,101.6 ms | 15.59 ms | -| **TUnit (AOT)** | 1.1.0 | 132.3 ms | 132.3 ms | 0.36 ms | +| **TUnit** | 1.1.0 | 601.9 ms | 602.5 ms | 2.97 ms | +| NUnit | 4.4.0 | 1,181.6 ms | 1,177.9 ms | 13.31 ms | +| MSTest | 4.0.2 | 2,965.3 ms | 2,966.7 ms | 6.96 ms | +| xUnit3 | 3.2.0 | 3,066.6 ms | 3,066.7 ms | 6.78 ms | +| **TUnit (AOT)** | 1.1.0 | 131.6 ms | 131.7 ms | 0.37 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI xychart-beta title "MassiveParallelTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 3720 - bar [625.5, 1213, 3010.8, 3099.6, 132.3] + y-axis "Time (ms)" 0 --> 3680 + bar [601.9, 1181.6, 2965.3, 3066.6, 131.6] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-12T21:13:20.517Z* +*Last generated: 2025-11-13T00:28:35.381Z* diff --git a/docs/docs/benchmarks/MatrixTests.md b/docs/docs/benchmarks/MatrixTests.md index d683a99d99..27168e700e 100644 --- a/docs/docs/benchmarks/MatrixTests.md +++ b/docs/docs/benchmarks/MatrixTests.md @@ -7,7 +7,7 @@ sidebar_position: 5 # MatrixTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-12** from the latest CI run. +This benchmark was automatically generated on **2025-11-13** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 557.69 ms | 556.60 ms | 4.221 ms | -| NUnit | 4.4.0 | 1,539.35 ms | 1,541.87 ms | 11.514 ms | -| MSTest | 4.0.2 | 1,496.25 ms | 1,496.55 ms | 5.576 ms | -| xUnit3 | 3.2.0 | 1,586.79 ms | 1,586.67 ms | 7.339 ms | -| **TUnit (AOT)** | 1.1.0 | 79.15 ms | 79.11 ms | 0.381 ms | +| **TUnit** | 1.1.0 | 570.36 ms | 570.43 ms | 4.980 ms | +| NUnit | 4.4.0 | 1,565.27 ms | 1,565.69 ms | 5.876 ms | +| MSTest | 4.0.2 | 1,523.48 ms | 1,521.53 ms | 8.270 ms | +| xUnit3 | 3.2.0 | 1,605.46 ms | 1,605.92 ms | 7.776 ms | +| **TUnit (AOT)** | 1.1.0 | 79.85 ms | 79.80 ms | 0.324 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI xychart-beta title "MatrixTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 1905 - bar [557.69, 1539.35, 1496.25, 1586.79, 79.15] + y-axis "Time (ms)" 0 --> 1927 + bar [570.36, 1565.27, 1523.48, 1605.46, 79.85] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-12T21:13:20.517Z* +*Last generated: 2025-11-13T00:28:35.381Z* diff --git a/docs/docs/benchmarks/ScaleTests.md b/docs/docs/benchmarks/ScaleTests.md index 3de683a15b..ad47b9ed23 100644 --- a/docs/docs/benchmarks/ScaleTests.md +++ b/docs/docs/benchmarks/ScaleTests.md @@ -7,7 +7,7 @@ sidebar_position: 6 # ScaleTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-12** from the latest CI run. +This benchmark was automatically generated on **2025-11-13** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 514.19 ms | 512.52 ms | 6.486 ms | -| NUnit | 4.4.0 | 552.95 ms | 553.62 ms | 7.860 ms | -| MSTest | 4.0.2 | 474.67 ms | 475.13 ms | 8.594 ms | -| xUnit3 | 3.2.0 | 562.71 ms | 561.53 ms | 6.028 ms | -| **TUnit (AOT)** | 1.1.0 | 44.36 ms | 45.13 ms | 3.857 ms | +| **TUnit** | 1.1.0 | 516.15 ms | 515.58 ms | 7.373 ms | +| NUnit | 4.4.0 | 582.62 ms | 580.89 ms | 8.879 ms | +| MSTest | 4.0.2 | 564.54 ms | 562.45 ms | 7.780 ms | +| xUnit3 | 3.2.0 | 578.98 ms | 576.98 ms | 9.057 ms | +| **TUnit (AOT)** | 1.1.0 | 44.37 ms | 44.24 ms | 3.944 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI xychart-beta title "ScaleTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 676 - bar [514.19, 552.95, 474.67, 562.71, 44.36] + y-axis "Time (ms)" 0 --> 700 + bar [516.15, 582.62, 564.54, 578.98, 44.37] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-12T21:13:20.517Z* +*Last generated: 2025-11-13T00:28:35.382Z* diff --git a/docs/docs/benchmarks/SetupTeardownTests.md b/docs/docs/benchmarks/SetupTeardownTests.md index 4452a73eb9..cbea02129f 100644 --- a/docs/docs/benchmarks/SetupTeardownTests.md +++ b/docs/docs/benchmarks/SetupTeardownTests.md @@ -7,7 +7,7 @@ sidebar_position: 7 # SetupTeardownTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-12** from the latest CI run. +This benchmark was automatically generated on **2025-11-13** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,10 +16,10 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 583.4 ms | 583.7 ms | 5.16 ms | -| NUnit | 4.4.0 | 1,198.4 ms | 1,195.0 ms | 15.35 ms | -| MSTest | 4.0.2 | 1,162.5 ms | 1,161.5 ms | 9.11 ms | -| xUnit3 | 3.2.0 | 1,243.3 ms | 1,241.9 ms | 9.80 ms | +| **TUnit** | 1.1.0 | 562.2 ms | 561.5 ms | 4.24 ms | +| NUnit | 4.4.0 | 1,173.5 ms | 1,173.5 ms | 9.02 ms | +| MSTest | 4.0.2 | 1,146.7 ms | 1,145.3 ms | 16.63 ms | +| xUnit3 | 3.2.0 | 1,216.8 ms | 1,217.2 ms | 5.86 ms | | **TUnit (AOT)** | 1.1.0 | NA | NA | NA | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-12** from the latest CI xychart-beta title "SetupTeardownTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 1492 - bar [583.4, 1198.4, 1162.5, 1243.3, 0] + y-axis "Time (ms)" 0 --> 1461 + bar [562.2, 1173.5, 1146.7, 1216.8, 0] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-12T21:13:20.517Z* +*Last generated: 2025-11-13T00:28:35.382Z* diff --git a/docs/docs/benchmarks/index.md b/docs/docs/benchmarks/index.md index c320ea6144..712902a439 100644 --- a/docs/docs/benchmarks/index.md +++ b/docs/docs/benchmarks/index.md @@ -7,7 +7,7 @@ sidebar_position: 1 # Performance Benchmarks :::info Last Updated -These benchmarks were automatically generated on **2025-11-12** from the latest CI run. +These benchmarks were automatically generated on **2025-11-13** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -59,7 +59,7 @@ The benchmarks measure real-world testing patterns: - **Runtime**: .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3 - **SDK**: .NET SDK 10.0.100 - **Hardware**: GitHub Actions Standard Runner (Ubuntu) -- **Tool**: BenchmarkDotNet v0.15.6, Linux Ubuntu 24.04.3 LTS (Noble Numbat) +- **Tool**: BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat) ### Why These Numbers Matter @@ -80,4 +80,4 @@ These benchmarks run automatically daily via [GitHub Actions](https://github.com Each benchmark runs multiple iterations with statistical analysis to ensure accuracy. Results may vary based on hardware and test characteristics. ::: -*Last generated: 2025-11-12T21:13:20.518Z* +*Last generated: 2025-11-13T00:28:35.383Z* diff --git a/docs/static/benchmarks/AsyncTests.json b/docs/static/benchmarks/AsyncTests.json index f0c2840116..a80f44cd3c 100644 --- a/docs/static/benchmarks/AsyncTests.json +++ b/docs/static/benchmarks/AsyncTests.json @@ -1,8 +1,8 @@ { - "timestamp": "2025-11-12T21:13:20.516Z", + "timestamp": "2025-11-13T00:28:35.381Z", "category": "AsyncTests", "environment": { - "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.6, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", + "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" }, @@ -10,42 +10,42 @@ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "558.9 ms", - "Error": "4.39 ms", - "StdDev": "4.11 ms", - "Median": "557.2 ms" + "Mean": "551.3 ms", + "Error": "2.23 ms", + "StdDev": "1.86 ms", + "Median": "551.1 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "650.2 ms", - "Error": "10.15 ms", - "StdDev": "9.00 ms", - "Median": "649.0 ms" + "Mean": "639.4 ms", + "Error": "11.51 ms", + "StdDev": "10.77 ms", + "Median": "634.6 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "615.0 ms", - "Error": "6.64 ms", - "StdDev": "5.89 ms", - "Median": "614.8 ms" + "Mean": "612.9 ms", + "Error": "10.30 ms", + "StdDev": "9.13 ms", + "Median": "611.2 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "702.4 ms", - "Error": "8.00 ms", - "StdDev": "7.09 ms", - "Median": "702.4 ms" + "Mean": "692.8 ms", + "Error": "6.56 ms", + "StdDev": "5.81 ms", + "Median": "692.6 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.0", - "Mean": "123.8 ms", - "Error": "0.49 ms", - "StdDev": "0.46 ms", - "Median": "123.9 ms" + "Mean": "122.7 ms", + "Error": "0.47 ms", + "StdDev": "0.41 ms", + "Median": "122.8 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/BuildTime.json b/docs/static/benchmarks/BuildTime.json index f64bd7f717..1560b2e2ae 100644 --- a/docs/static/benchmarks/BuildTime.json +++ b/docs/static/benchmarks/BuildTime.json @@ -1,8 +1,8 @@ { - "timestamp": "2025-11-12T21:13:20.518Z", + "timestamp": "2025-11-13T00:28:35.383Z", "category": "BuildTime", "environment": { - "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.6, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", + "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" }, @@ -10,34 +10,34 @@ { "Method": "Build_TUnit", "Version": "1.1.0", - "Mean": "2.033 s", - "Error": "0.0333 s", - "StdDev": "0.0296 s", - "Median": "2.032 s" + "Mean": "2.100 s", + "Error": "0.0234 s", + "StdDev": "0.0207 s", + "Median": "2.101 s" }, { "Method": "Build_NUnit", "Version": "4.4.0", - "Mean": "1.622 s", - "Error": "0.0231 s", - "StdDev": "0.0216 s", - "Median": "1.615 s" + "Mean": "1.688 s", + "Error": "0.0229 s", + "StdDev": "0.0214 s", + "Median": "1.689 s" }, { "Method": "Build_MSTest", "Version": "4.0.2", - "Mean": "1.705 s", - "Error": "0.0247 s", - "StdDev": "0.0231 s", - "Median": "1.701 s" + "Mean": "1.731 s", + "Error": "0.0265 s", + "StdDev": "0.0235 s", + "Median": "1.733 s" }, { "Method": "Build_xUnit3", "Version": "3.2.0", - "Mean": "1.611 s", - "Error": "0.0265 s", - "StdDev": "0.0248 s", - "Median": "1.613 s" + "Mean": "1.648 s", + "Error": "0.0303 s", + "StdDev": "0.0283 s", + "Median": "1.639 s" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/DataDrivenTests.json b/docs/static/benchmarks/DataDrivenTests.json index 03fc62272a..8d566f7430 100644 --- a/docs/static/benchmarks/DataDrivenTests.json +++ b/docs/static/benchmarks/DataDrivenTests.json @@ -1,8 +1,8 @@ { - "timestamp": "2025-11-12T21:13:20.517Z", + "timestamp": "2025-11-13T00:28:35.381Z", "category": "DataDrivenTests", "environment": { - "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.6, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", + "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" }, @@ -10,42 +10,42 @@ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "510.37 ms", - "Error": "7.617 ms", - "StdDev": "7.125 ms", - "Median": "511.05 ms" + "Mean": "486.77 ms", + "Error": "4.539 ms", + "StdDev": "3.791 ms", + "Median": "486.53 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "583.06 ms", - "Error": "11.292 ms", - "StdDev": "17.581 ms", - "Median": "583.47 ms" + "Mean": "589.92 ms", + "Error": "11.358 ms", + "StdDev": "12.153 ms", + "Median": "591.78 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "594.23 ms", - "Error": "11.707 ms", - "StdDev": "18.226 ms", - "Median": "591.72 ms" + "Mean": "605.63 ms", + "Error": "11.934 ms", + "StdDev": "14.207 ms", + "Median": "602.89 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "604.34 ms", - "Error": "8.401 ms", - "StdDev": "7.447 ms", - "Median": "605.85 ms" + "Mean": "600.41 ms", + "Error": "11.230 ms", + "StdDev": "10.504 ms", + "Median": "597.06 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.0", - "Mean": "25.55 ms", - "Error": "0.258 ms", - "StdDev": "0.241 ms", - "Median": "25.62 ms" + "Mean": "24.05 ms", + "Error": "0.255 ms", + "StdDev": "0.239 ms", + "Median": "24.05 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/MassiveParallelTests.json b/docs/static/benchmarks/MassiveParallelTests.json index c60cb4d2d9..6a32ec791c 100644 --- a/docs/static/benchmarks/MassiveParallelTests.json +++ b/docs/static/benchmarks/MassiveParallelTests.json @@ -1,8 +1,8 @@ { - "timestamp": "2025-11-12T21:13:20.517Z", + "timestamp": "2025-11-13T00:28:35.381Z", "category": "MassiveParallelTests", "environment": { - "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.6, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", + "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" }, @@ -10,42 +10,42 @@ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "625.5 ms", - "Error": "8.58 ms", - "StdDev": "7.61 ms", - "Median": "626.8 ms" + "Mean": "601.9 ms", + "Error": "3.35 ms", + "StdDev": "2.97 ms", + "Median": "602.5 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,213.0 ms", - "Error": "13.24 ms", - "StdDev": "12.39 ms", - "Median": "1,211.9 ms" + "Mean": "1,181.6 ms", + "Error": "15.01 ms", + "StdDev": "13.31 ms", + "Median": "1,177.9 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "3,010.8 ms", - "Error": "13.51 ms", - "StdDev": "12.63 ms", - "Median": "3,010.4 ms" + "Mean": "2,965.3 ms", + "Error": "7.85 ms", + "StdDev": "6.96 ms", + "Median": "2,966.7 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "3,099.6 ms", - "Error": "17.58 ms", - "StdDev": "15.59 ms", - "Median": "3,101.6 ms" + "Mean": "3,066.6 ms", + "Error": "7.64 ms", + "StdDev": "6.78 ms", + "Median": "3,066.7 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.0", - "Mean": "132.3 ms", - "Error": "0.47 ms", - "StdDev": "0.36 ms", - "Median": "132.3 ms" + "Mean": "131.6 ms", + "Error": "0.39 ms", + "StdDev": "0.37 ms", + "Median": "131.7 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/MatrixTests.json b/docs/static/benchmarks/MatrixTests.json index fd462c3e66..228fc05585 100644 --- a/docs/static/benchmarks/MatrixTests.json +++ b/docs/static/benchmarks/MatrixTests.json @@ -1,8 +1,8 @@ { - "timestamp": "2025-11-12T21:13:20.517Z", + "timestamp": "2025-11-13T00:28:35.382Z", "category": "MatrixTests", "environment": { - "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.6, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", + "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" }, @@ -10,42 +10,42 @@ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "557.69 ms", - "Error": "4.512 ms", - "StdDev": "4.221 ms", - "Median": "556.60 ms" + "Mean": "570.36 ms", + "Error": "5.617 ms", + "StdDev": "4.980 ms", + "Median": "570.43 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,539.35 ms", - "Error": "12.309 ms", - "StdDev": "11.514 ms", - "Median": "1,541.87 ms" + "Mean": "1,565.27 ms", + "Error": "6.629 ms", + "StdDev": "5.876 ms", + "Median": "1,565.69 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,496.25 ms", - "Error": "7.142 ms", - "StdDev": "5.576 ms", - "Median": "1,496.55 ms" + "Mean": "1,523.48 ms", + "Error": "9.329 ms", + "StdDev": "8.270 ms", + "Median": "1,521.53 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,586.79 ms", - "Error": "7.846 ms", - "StdDev": "7.339 ms", - "Median": "1,586.67 ms" + "Mean": "1,605.46 ms", + "Error": "8.313 ms", + "StdDev": "7.776 ms", + "Median": "1,605.92 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.0", - "Mean": "79.15 ms", - "Error": "0.408 ms", - "StdDev": "0.381 ms", - "Median": "79.11 ms" + "Mean": "79.85 ms", + "Error": "0.366 ms", + "StdDev": "0.324 ms", + "Median": "79.80 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/ScaleTests.json b/docs/static/benchmarks/ScaleTests.json index 47799a37bb..e6b0bd67da 100644 --- a/docs/static/benchmarks/ScaleTests.json +++ b/docs/static/benchmarks/ScaleTests.json @@ -1,8 +1,8 @@ { - "timestamp": "2025-11-12T21:13:20.517Z", + "timestamp": "2025-11-13T00:28:35.382Z", "category": "ScaleTests", "environment": { - "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.6, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", + "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" }, @@ -10,42 +10,42 @@ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "514.19 ms", - "Error": "6.934 ms", - "StdDev": "6.486 ms", - "Median": "512.52 ms" + "Mean": "516.15 ms", + "Error": "7.882 ms", + "StdDev": "7.373 ms", + "Median": "515.58 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "552.95 ms", - "Error": "8.867 ms", - "StdDev": "7.860 ms", - "Median": "553.62 ms" + "Mean": "582.62 ms", + "Error": "10.017 ms", + "StdDev": "8.879 ms", + "Median": "580.89 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "474.67 ms", - "Error": "9.187 ms", - "StdDev": "8.594 ms", - "Median": "475.13 ms" + "Mean": "564.54 ms", + "Error": "8.777 ms", + "StdDev": "7.780 ms", + "Median": "562.45 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "562.71 ms", - "Error": "6.445 ms", - "StdDev": "6.028 ms", - "Median": "561.53 ms" + "Mean": "578.98 ms", + "Error": "10.217 ms", + "StdDev": "9.057 ms", + "Median": "576.98 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.0", - "Mean": "44.36 ms", - "Error": "1.308 ms", - "StdDev": "3.857 ms", - "Median": "45.13 ms" + "Mean": "44.37 ms", + "Error": "1.338 ms", + "StdDev": "3.944 ms", + "Median": "44.24 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/SetupTeardownTests.json b/docs/static/benchmarks/SetupTeardownTests.json index b432996a90..0f70c9e758 100644 --- a/docs/static/benchmarks/SetupTeardownTests.json +++ b/docs/static/benchmarks/SetupTeardownTests.json @@ -1,8 +1,8 @@ { - "timestamp": "2025-11-12T21:13:20.518Z", + "timestamp": "2025-11-13T00:28:35.382Z", "category": "SetupTeardownTests", "environment": { - "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.6, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", + "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" }, @@ -10,34 +10,34 @@ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "583.4 ms", - "Error": "6.18 ms", - "StdDev": "5.16 ms", - "Median": "583.7 ms" + "Mean": "562.2 ms", + "Error": "4.53 ms", + "StdDev": "4.24 ms", + "Median": "561.5 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,198.4 ms", - "Error": "16.41 ms", - "StdDev": "15.35 ms", - "Median": "1,195.0 ms" + "Mean": "1,173.5 ms", + "Error": "9.64 ms", + "StdDev": "9.02 ms", + "Median": "1,173.5 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,162.5 ms", - "Error": "10.28 ms", - "StdDev": "9.11 ms", - "Median": "1,161.5 ms" + "Mean": "1,146.7 ms", + "Error": "18.76 ms", + "StdDev": "16.63 ms", + "Median": "1,145.3 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,243.3 ms", - "Error": "10.48 ms", - "StdDev": "9.80 ms", - "Median": "1,241.9 ms" + "Mean": "1,216.8 ms", + "Error": "6.27 ms", + "StdDev": "5.86 ms", + "Median": "1,217.2 ms" }, { "Method": "TUnit_AOT", diff --git a/docs/static/benchmarks/historical.json b/docs/static/benchmarks/historical.json index 10ef4375d6..ce726f2385 100644 --- a/docs/static/benchmarks/historical.json +++ b/docs/static/benchmarks/historical.json @@ -30,5 +30,9 @@ { "date": "2025-11-12", "environment": "Ubuntu" + }, + { + "date": "2025-11-13", + "environment": "Ubuntu" } ] \ No newline at end of file diff --git a/docs/static/benchmarks/latest.json b/docs/static/benchmarks/latest.json index 8b4f513b5e..0a206bd729 100644 --- a/docs/static/benchmarks/latest.json +++ b/docs/static/benchmarks/latest.json @@ -1,7 +1,7 @@ { - "timestamp": "2025-11-12T21:13:20.518Z", + "timestamp": "2025-11-13T00:28:35.383Z", "environment": { - "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.6, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", + "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" }, @@ -10,244 +10,244 @@ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "558.9 ms", - "Error": "4.39 ms", - "StdDev": "4.11 ms", - "Median": "557.2 ms" + "Mean": "551.3 ms", + "Error": "2.23 ms", + "StdDev": "1.86 ms", + "Median": "551.1 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "650.2 ms", - "Error": "10.15 ms", - "StdDev": "9.00 ms", - "Median": "649.0 ms" + "Mean": "639.4 ms", + "Error": "11.51 ms", + "StdDev": "10.77 ms", + "Median": "634.6 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "615.0 ms", - "Error": "6.64 ms", - "StdDev": "5.89 ms", - "Median": "614.8 ms" + "Mean": "612.9 ms", + "Error": "10.30 ms", + "StdDev": "9.13 ms", + "Median": "611.2 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "702.4 ms", - "Error": "8.00 ms", - "StdDev": "7.09 ms", - "Median": "702.4 ms" + "Mean": "692.8 ms", + "Error": "6.56 ms", + "StdDev": "5.81 ms", + "Median": "692.6 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.0", - "Mean": "123.8 ms", - "Error": "0.49 ms", - "StdDev": "0.46 ms", - "Median": "123.9 ms" + "Mean": "122.7 ms", + "Error": "0.47 ms", + "StdDev": "0.41 ms", + "Median": "122.8 ms" } ], "DataDrivenTests": [ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "510.37 ms", - "Error": "7.617 ms", - "StdDev": "7.125 ms", - "Median": "511.05 ms" + "Mean": "486.77 ms", + "Error": "4.539 ms", + "StdDev": "3.791 ms", + "Median": "486.53 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "583.06 ms", - "Error": "11.292 ms", - "StdDev": "17.581 ms", - "Median": "583.47 ms" + "Mean": "589.92 ms", + "Error": "11.358 ms", + "StdDev": "12.153 ms", + "Median": "591.78 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "594.23 ms", - "Error": "11.707 ms", - "StdDev": "18.226 ms", - "Median": "591.72 ms" + "Mean": "605.63 ms", + "Error": "11.934 ms", + "StdDev": "14.207 ms", + "Median": "602.89 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "604.34 ms", - "Error": "8.401 ms", - "StdDev": "7.447 ms", - "Median": "605.85 ms" + "Mean": "600.41 ms", + "Error": "11.230 ms", + "StdDev": "10.504 ms", + "Median": "597.06 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.0", - "Mean": "25.55 ms", - "Error": "0.258 ms", - "StdDev": "0.241 ms", - "Median": "25.62 ms" + "Mean": "24.05 ms", + "Error": "0.255 ms", + "StdDev": "0.239 ms", + "Median": "24.05 ms" } ], "MassiveParallelTests": [ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "625.5 ms", - "Error": "8.58 ms", - "StdDev": "7.61 ms", - "Median": "626.8 ms" + "Mean": "601.9 ms", + "Error": "3.35 ms", + "StdDev": "2.97 ms", + "Median": "602.5 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,213.0 ms", - "Error": "13.24 ms", - "StdDev": "12.39 ms", - "Median": "1,211.9 ms" + "Mean": "1,181.6 ms", + "Error": "15.01 ms", + "StdDev": "13.31 ms", + "Median": "1,177.9 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "3,010.8 ms", - "Error": "13.51 ms", - "StdDev": "12.63 ms", - "Median": "3,010.4 ms" + "Mean": "2,965.3 ms", + "Error": "7.85 ms", + "StdDev": "6.96 ms", + "Median": "2,966.7 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "3,099.6 ms", - "Error": "17.58 ms", - "StdDev": "15.59 ms", - "Median": "3,101.6 ms" + "Mean": "3,066.6 ms", + "Error": "7.64 ms", + "StdDev": "6.78 ms", + "Median": "3,066.7 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.0", - "Mean": "132.3 ms", - "Error": "0.47 ms", - "StdDev": "0.36 ms", - "Median": "132.3 ms" + "Mean": "131.6 ms", + "Error": "0.39 ms", + "StdDev": "0.37 ms", + "Median": "131.7 ms" } ], "MatrixTests": [ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "557.69 ms", - "Error": "4.512 ms", - "StdDev": "4.221 ms", - "Median": "556.60 ms" + "Mean": "570.36 ms", + "Error": "5.617 ms", + "StdDev": "4.980 ms", + "Median": "570.43 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,539.35 ms", - "Error": "12.309 ms", - "StdDev": "11.514 ms", - "Median": "1,541.87 ms" + "Mean": "1,565.27 ms", + "Error": "6.629 ms", + "StdDev": "5.876 ms", + "Median": "1,565.69 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,496.25 ms", - "Error": "7.142 ms", - "StdDev": "5.576 ms", - "Median": "1,496.55 ms" + "Mean": "1,523.48 ms", + "Error": "9.329 ms", + "StdDev": "8.270 ms", + "Median": "1,521.53 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,586.79 ms", - "Error": "7.846 ms", - "StdDev": "7.339 ms", - "Median": "1,586.67 ms" + "Mean": "1,605.46 ms", + "Error": "8.313 ms", + "StdDev": "7.776 ms", + "Median": "1,605.92 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.0", - "Mean": "79.15 ms", - "Error": "0.408 ms", - "StdDev": "0.381 ms", - "Median": "79.11 ms" + "Mean": "79.85 ms", + "Error": "0.366 ms", + "StdDev": "0.324 ms", + "Median": "79.80 ms" } ], "ScaleTests": [ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "514.19 ms", - "Error": "6.934 ms", - "StdDev": "6.486 ms", - "Median": "512.52 ms" + "Mean": "516.15 ms", + "Error": "7.882 ms", + "StdDev": "7.373 ms", + "Median": "515.58 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "552.95 ms", - "Error": "8.867 ms", - "StdDev": "7.860 ms", - "Median": "553.62 ms" + "Mean": "582.62 ms", + "Error": "10.017 ms", + "StdDev": "8.879 ms", + "Median": "580.89 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "474.67 ms", - "Error": "9.187 ms", - "StdDev": "8.594 ms", - "Median": "475.13 ms" + "Mean": "564.54 ms", + "Error": "8.777 ms", + "StdDev": "7.780 ms", + "Median": "562.45 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "562.71 ms", - "Error": "6.445 ms", - "StdDev": "6.028 ms", - "Median": "561.53 ms" + "Mean": "578.98 ms", + "Error": "10.217 ms", + "StdDev": "9.057 ms", + "Median": "576.98 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.0", - "Mean": "44.36 ms", - "Error": "1.308 ms", - "StdDev": "3.857 ms", - "Median": "45.13 ms" + "Mean": "44.37 ms", + "Error": "1.338 ms", + "StdDev": "3.944 ms", + "Median": "44.24 ms" } ], "SetupTeardownTests": [ { "Method": "TUnit", "Version": "1.1.0", - "Mean": "583.4 ms", - "Error": "6.18 ms", - "StdDev": "5.16 ms", - "Median": "583.7 ms" + "Mean": "562.2 ms", + "Error": "4.53 ms", + "StdDev": "4.24 ms", + "Median": "561.5 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,198.4 ms", - "Error": "16.41 ms", - "StdDev": "15.35 ms", - "Median": "1,195.0 ms" + "Mean": "1,173.5 ms", + "Error": "9.64 ms", + "StdDev": "9.02 ms", + "Median": "1,173.5 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,162.5 ms", - "Error": "10.28 ms", - "StdDev": "9.11 ms", - "Median": "1,161.5 ms" + "Mean": "1,146.7 ms", + "Error": "18.76 ms", + "StdDev": "16.63 ms", + "Median": "1,145.3 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,243.3 ms", - "Error": "10.48 ms", - "StdDev": "9.80 ms", - "Median": "1,241.9 ms" + "Mean": "1,216.8 ms", + "Error": "6.27 ms", + "StdDev": "5.86 ms", + "Median": "1,217.2 ms" }, { "Method": "TUnit_AOT", @@ -264,34 +264,34 @@ { "Method": "Build_TUnit", "Version": "1.1.0", - "Mean": "2.033 s", - "Error": "0.0333 s", - "StdDev": "0.0296 s", - "Median": "2.032 s" + "Mean": "2.100 s", + "Error": "0.0234 s", + "StdDev": "0.0207 s", + "Median": "2.101 s" }, { "Method": "Build_NUnit", "Version": "4.4.0", - "Mean": "1.622 s", - "Error": "0.0231 s", - "StdDev": "0.0216 s", - "Median": "1.615 s" + "Mean": "1.688 s", + "Error": "0.0229 s", + "StdDev": "0.0214 s", + "Median": "1.689 s" }, { "Method": "Build_MSTest", "Version": "4.0.2", - "Mean": "1.705 s", - "Error": "0.0247 s", - "StdDev": "0.0231 s", - "Median": "1.701 s" + "Mean": "1.731 s", + "Error": "0.0265 s", + "StdDev": "0.0235 s", + "Median": "1.733 s" }, { "Method": "Build_xUnit3", "Version": "3.2.0", - "Mean": "1.611 s", - "Error": "0.0265 s", - "StdDev": "0.0248 s", - "Median": "1.613 s" + "Mean": "1.648 s", + "Error": "0.0303 s", + "StdDev": "0.0283 s", + "Median": "1.639 s" } ] }, @@ -299,6 +299,6 @@ "runtimeCategories": 6, "buildCategories": 1, "totalBenchmarks": 7, - "lastUpdated": "2025-11-12T21:13:20.516Z" + "lastUpdated": "2025-11-13T00:28:35.380Z" } } \ No newline at end of file diff --git a/docs/static/benchmarks/summary.json b/docs/static/benchmarks/summary.json index dbf147f580..31d8bad9d5 100644 --- a/docs/static/benchmarks/summary.json +++ b/docs/static/benchmarks/summary.json @@ -10,6 +10,6 @@ "build": [ "BuildTime" ], - "timestamp": "2025-11-12", + "timestamp": "2025-11-13", "environment": "Ubuntu Latest • .NET SDK 10.0.100" } \ No newline at end of file From 6a5721f59438c32dea59049ea3bc97259db756d5 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Thu, 13 Nov 2025 01:21:50 +0000 Subject: [PATCH 06/17] chore(deps): update tunit to 1.1.10 (#3821) Co-authored-by: Renovate Bot --- Directory.Packages.props | 6 +++--- .../TUnit.AspNet.FSharp/TestProject/TestProject.fsproj | 4 ++-- .../content/TUnit.AspNet/TestProject/TestProject.csproj | 2 +- .../ExampleNamespace.TestProject.csproj | 2 +- .../content/TUnit.Aspire.Test/ExampleNamespace.csproj | 2 +- TUnit.Templates/content/TUnit.FSharp/TestProject.fsproj | 4 ++-- TUnit.Templates/content/TUnit.Playwright/TestProject.csproj | 2 +- TUnit.Templates/content/TUnit.VB/TestProject.vbproj | 2 +- TUnit.Templates/content/TUnit/TestProject.csproj | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 2f726aef4a..62fbe75b4e 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -83,9 +83,9 @@ - - - + + + diff --git a/TUnit.Templates/content/TUnit.AspNet.FSharp/TestProject/TestProject.fsproj b/TUnit.Templates/content/TUnit.AspNet.FSharp/TestProject/TestProject.fsproj index 466f212a0f..698f64e438 100644 --- a/TUnit.Templates/content/TUnit.AspNet.FSharp/TestProject/TestProject.fsproj +++ b/TUnit.Templates/content/TUnit.AspNet.FSharp/TestProject/TestProject.fsproj @@ -10,8 +10,8 @@ - - + + diff --git a/TUnit.Templates/content/TUnit.AspNet/TestProject/TestProject.csproj b/TUnit.Templates/content/TUnit.AspNet/TestProject/TestProject.csproj index 3b4dea1e34..6ba222eecf 100644 --- a/TUnit.Templates/content/TUnit.AspNet/TestProject/TestProject.csproj +++ b/TUnit.Templates/content/TUnit.AspNet/TestProject/TestProject.csproj @@ -9,7 +9,7 @@ - + diff --git a/TUnit.Templates/content/TUnit.Aspire.Starter/ExampleNamespace.TestProject/ExampleNamespace.TestProject.csproj b/TUnit.Templates/content/TUnit.Aspire.Starter/ExampleNamespace.TestProject/ExampleNamespace.TestProject.csproj index 2d85bf717d..8acb6f52e2 100644 --- a/TUnit.Templates/content/TUnit.Aspire.Starter/ExampleNamespace.TestProject/ExampleNamespace.TestProject.csproj +++ b/TUnit.Templates/content/TUnit.Aspire.Starter/ExampleNamespace.TestProject/ExampleNamespace.TestProject.csproj @@ -11,7 +11,7 @@ - + diff --git a/TUnit.Templates/content/TUnit.Aspire.Test/ExampleNamespace.csproj b/TUnit.Templates/content/TUnit.Aspire.Test/ExampleNamespace.csproj index 87faa21d22..87383344ce 100644 --- a/TUnit.Templates/content/TUnit.Aspire.Test/ExampleNamespace.csproj +++ b/TUnit.Templates/content/TUnit.Aspire.Test/ExampleNamespace.csproj @@ -10,7 +10,7 @@ - + diff --git a/TUnit.Templates/content/TUnit.FSharp/TestProject.fsproj b/TUnit.Templates/content/TUnit.FSharp/TestProject.fsproj index adafbe6af9..68aace76d7 100644 --- a/TUnit.Templates/content/TUnit.FSharp/TestProject.fsproj +++ b/TUnit.Templates/content/TUnit.FSharp/TestProject.fsproj @@ -10,8 +10,8 @@ - - + + diff --git a/TUnit.Templates/content/TUnit.Playwright/TestProject.csproj b/TUnit.Templates/content/TUnit.Playwright/TestProject.csproj index 662edbd9f1..8416c07b8c 100644 --- a/TUnit.Templates/content/TUnit.Playwright/TestProject.csproj +++ b/TUnit.Templates/content/TUnit.Playwright/TestProject.csproj @@ -8,7 +8,7 @@ - + diff --git a/TUnit.Templates/content/TUnit.VB/TestProject.vbproj b/TUnit.Templates/content/TUnit.VB/TestProject.vbproj index 6242ab0689..6fab6c832c 100644 --- a/TUnit.Templates/content/TUnit.VB/TestProject.vbproj +++ b/TUnit.Templates/content/TUnit.VB/TestProject.vbproj @@ -8,6 +8,6 @@ - + diff --git a/TUnit.Templates/content/TUnit/TestProject.csproj b/TUnit.Templates/content/TUnit/TestProject.csproj index f0173684fd..6390ab9ec7 100644 --- a/TUnit.Templates/content/TUnit/TestProject.csproj +++ b/TUnit.Templates/content/TUnit/TestProject.csproj @@ -8,7 +8,7 @@ - + \ No newline at end of file From a3f2af8b229e048ef12c5b84721e550406490125 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Thu, 13 Nov 2025 02:04:03 +0000 Subject: [PATCH 07/17] chore(deps): update dependency polyfill to 9.0.2 (#3823) Co-authored-by: Renovate Bot --- TUnit.Core/TUnit.Core.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TUnit.Core/TUnit.Core.targets b/TUnit.Core/TUnit.Core.targets index f27fabe053..def0278a4b 100644 --- a/TUnit.Core/TUnit.Core.targets +++ b/TUnit.Core/TUnit.Core.targets @@ -8,7 +8,7 @@ - <_TUnitPolyfillVersion>9.0.1 + <_TUnitPolyfillVersion>9.0.2 <_TUnitNeedsPolyfill Condition="'$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'netstandard2.1' or '$(TargetFrameworkIdentifier)' == '.NETFramework'">true From 508120b6da93d89b0939bc8aa2862d7804ce5896 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Thu, 13 Nov 2025 03:08:05 +0000 Subject: [PATCH 08/17] chore(deps): update dependency polyfill to 9.0.2 (#3790) Co-authored-by: Renovate Bot --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 62fbe75b4e..7e70725500 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -59,7 +59,7 @@ - + From 8bd4ceb43c87b257d7bca1b7bf1a823f6cd2f6ff Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Thu, 13 Nov 2025 06:01:05 +0000 Subject: [PATCH 09/17] chore(deps): update verify to 31.7.1 (#3825) Co-authored-by: Renovate Bot --- Directory.Packages.props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 7e70725500..94f7f5ef94 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -81,12 +81,12 @@ - - + + - + From 63288127c7e8557200f3194a2d24fe9ae5c27c7d Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 13 Nov 2025 19:30:35 +0000 Subject: [PATCH 10/17] Fix documentation: Update TestContext API from context.Result to context.Execution.Result (#3837) * Initial plan * Fix documentation: Update TestContext API references from context.Result to context.Execution.Result Co-authored-by: thomhurst <30480171+thomhurst@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: thomhurst <30480171+thomhurst@users.noreply.github.com> --- docs/docs/advanced/extension-points.md | 8 ++++---- docs/docs/advanced/performance-best-practices.md | 6 +++--- docs/docs/advanced/test-variants.md | 2 +- docs/docs/test-lifecycle/cleanup.md | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/docs/advanced/extension-points.md b/docs/docs/advanced/extension-points.md index 8ad86faf7d..b4c9e0a1d3 100644 --- a/docs/docs/advanced/extension-points.md +++ b/docs/docs/advanced/extension-points.md @@ -262,9 +262,9 @@ public class TestReporterAttribute : Attribute, ITestStartEventReceiver, ITestEn { await ReportingService.ReportTestCompleted( context.GetDisplayName(), - context.Result?.State, - context.Result?.Duration, - context.Result?.Exception?.Message + context.Execution.Result?.State, + context.Execution.Result?.Duration, + context.Execution.Result?.Exception?.Message ); } } @@ -289,7 +289,7 @@ public class CustomEventReceiverAttribute : Attribute, ITestStartEventReceiver, public ValueTask OnTestEnd(TestContext context) { - Console.WriteLine($"Test ended: {context.GetDisplayName()} - {context.Result?.State}"); + Console.WriteLine($"Test ended: {context.GetDisplayName()} - {context.Execution.Result?.State}"); return default; } } diff --git a/docs/docs/advanced/performance-best-practices.md b/docs/docs/advanced/performance-best-practices.md index ff4645ae88..65587e29db 100644 --- a/docs/docs/advanced/performance-best-practices.md +++ b/docs/docs/advanced/performance-best-practices.md @@ -533,16 +533,16 @@ public class PerformanceAwareExecutor : ITestExecutor public static void RecordTestMetrics() { var context = TestContext.Current; - if (context?.Result != null) + if (context?.Execution.Result != null) { TelemetryClient.TrackMetric( "TestDuration", - context.Result.Duration.TotalMilliseconds, + context.Execution.Result.Duration.TotalMilliseconds, new Dictionary { ["TestName"] = context.Metadata.TestName, ["TestClass"] = context.Metadata.TestDetails.TestClass, - ["Result"] = context.Result.State.ToString() + ["Result"] = context.Execution.Result.State.ToString() }); } } diff --git a/docs/docs/advanced/test-variants.md b/docs/docs/advanced/test-variants.md index 6e5d662808..9bb698c504 100644 --- a/docs/docs/advanced/test-variants.md +++ b/docs/docs/advanced/test-variants.md @@ -87,7 +87,7 @@ public class ShrinkOnFailureAttribute : Attribute, ITestEndEventReceiver public async ValueTask OnTestEnd(TestContext testContext) { // Only shrink if test failed and it's not already a shrink attempt - if (testContext.Result?.Status != TestStatus.Failed) + if (testContext.Execution.Result?.State != TestState.Failed) return; if (testContext.Relationship == TestRelationship.Derived) diff --git a/docs/docs/test-lifecycle/cleanup.md b/docs/docs/test-lifecycle/cleanup.md index cb6366826f..6c66d55408 100644 --- a/docs/docs/test-lifecycle/cleanup.md +++ b/docs/docs/test-lifecycle/cleanup.md @@ -37,7 +37,7 @@ Hooks can optionally accept parameters for accessing context information and can public async Task Cleanup(TestContext context, CancellationToken cancellationToken) { // Access test results via context - if (context.Result?.Status == TestStatus.Failed) + if (context.Execution.Result?.State == TestState.Failed) { await CaptureScreenshot(cancellationToken); } From b146080e95c64894116f1ad2787d5cba2341c0ad Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Thu, 13 Nov 2025 23:30:18 +0000 Subject: [PATCH 11/17] chore(deps): update dependency polyfill to 9.0.3 (#3840) Co-authored-by: Renovate Bot --- TUnit.Core/TUnit.Core.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TUnit.Core/TUnit.Core.targets b/TUnit.Core/TUnit.Core.targets index def0278a4b..ae21f778a1 100644 --- a/TUnit.Core/TUnit.Core.targets +++ b/TUnit.Core/TUnit.Core.targets @@ -8,7 +8,7 @@ - <_TUnitPolyfillVersion>9.0.2 + <_TUnitPolyfillVersion>9.0.3 <_TUnitNeedsPolyfill Condition="'$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'netstandard2.1' or '$(TargetFrameworkIdentifier)' == '.NETFramework'">true From f98f9030aa373a6a6f6969cbb0024bc36edd6cef Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Thu, 13 Nov 2025 23:36:15 +0000 Subject: [PATCH 12/17] chore(deps): update dependency polyfill to 9.0.3 (#3839) Co-authored-by: Renovate Bot --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 94f7f5ef94..97b2ad0442 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -59,7 +59,7 @@ - + From dbe74b017ae52dac0483686e1d24d0b833d87d02 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Fri, 14 Nov 2025 00:29:09 +0000 Subject: [PATCH 13/17] chore: update benchmark results (#3841) --- docs/docs/benchmarks/AsyncTests.md | 18 +- docs/docs/benchmarks/BuildTime.md | 14 +- docs/docs/benchmarks/DataDrivenTests.md | 18 +- docs/docs/benchmarks/MassiveParallelTests.md | 18 +- docs/docs/benchmarks/MatrixTests.md | 18 +- docs/docs/benchmarks/ScaleTests.md | 18 +- docs/docs/benchmarks/SetupTeardownTests.md | 18 +- docs/docs/benchmarks/index.md | 6 +- docs/static/benchmarks/AsyncTests.json | 46 +-- docs/static/benchmarks/BuildTime.json | 36 +-- docs/static/benchmarks/DataDrivenTests.json | 46 +-- .../benchmarks/MassiveParallelTests.json | 46 +-- docs/static/benchmarks/MatrixTests.json | 46 +-- docs/static/benchmarks/ScaleTests.json | 46 +-- .../static/benchmarks/SetupTeardownTests.json | 38 +-- docs/static/benchmarks/historical.json | 4 + docs/static/benchmarks/latest.json | 294 +++++++++--------- docs/static/benchmarks/summary.json | 2 +- 18 files changed, 368 insertions(+), 364 deletions(-) diff --git a/docs/docs/benchmarks/AsyncTests.md b/docs/docs/benchmarks/AsyncTests.md index 2657a3eaac..569ebebef9 100644 --- a/docs/docs/benchmarks/AsyncTests.md +++ b/docs/docs/benchmarks/AsyncTests.md @@ -7,7 +7,7 @@ sidebar_position: 2 # AsyncTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-13** from the latest CI run. +This benchmark was automatically generated on **2025-11-14** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 551.3 ms | 551.1 ms | 1.86 ms | -| NUnit | 4.4.0 | 639.4 ms | 634.6 ms | 10.77 ms | -| MSTest | 4.0.2 | 612.9 ms | 611.2 ms | 9.13 ms | -| xUnit3 | 3.2.0 | 692.8 ms | 692.6 ms | 5.81 ms | -| **TUnit (AOT)** | 1.1.0 | 122.7 ms | 122.8 ms | 0.41 ms | +| **TUnit** | 1.1.10 | 565.6 ms | 564.2 ms | 3.94 ms | +| NUnit | 4.4.0 | 681.8 ms | 682.0 ms | 4.42 ms | +| MSTest | 4.0.2 | 654.5 ms | 653.4 ms | 6.20 ms | +| xUnit3 | 3.2.0 | 734.5 ms | 736.6 ms | 8.35 ms | +| **TUnit (AOT)** | 1.1.10 | 124.2 ms | 124.2 ms | 0.29 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI xychart-beta title "AsyncTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 832 - bar [551.3, 639.4, 612.9, 692.8, 122.7] + y-axis "Time (ms)" 0 --> 882 + bar [565.6, 681.8, 654.5, 734.5, 124.2] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-13T00:28:35.380Z* +*Last generated: 2025-11-14T00:28:50.466Z* diff --git a/docs/docs/benchmarks/BuildTime.md b/docs/docs/benchmarks/BuildTime.md index fde44e0ac3..222d322fbb 100644 --- a/docs/docs/benchmarks/BuildTime.md +++ b/docs/docs/benchmarks/BuildTime.md @@ -7,7 +7,7 @@ sidebar_position: 8 # Build Performance Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-13** from the latest CI run. +This benchmark was automatically generated on **2025-11-14** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -18,10 +18,10 @@ Compilation time comparison across frameworks: | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 2.100 s | 2.101 s | 0.0207 s | -| Build_NUnit | 4.4.0 | 1.688 s | 1.689 s | 0.0214 s | -| Build_MSTest | 4.0.2 | 1.731 s | 1.733 s | 0.0235 s | -| Build_xUnit3 | 3.2.0 | 1.648 s | 1.639 s | 0.0283 s | +| **TUnit** | 1.1.10 | 2.051 s | 2.047 s | 0.0286 s | +| Build_NUnit | 4.4.0 | 1.637 s | 1.634 s | 0.0138 s | +| Build_MSTest | 4.0.2 | 1.709 s | 1.706 s | 0.0086 s | +| Build_xUnit3 | 3.2.0 | 1.618 s | 1.615 s | 0.0180 s | ## 📈 Visual Comparison @@ -60,7 +60,7 @@ xychart-beta title "Build Time Comparison" x-axis ["Build_TUnit", "Build_NUnit", "Build_MSTest", "Build_xUnit3"] y-axis "Time (s)" 0 --> 3 - bar [2.1, 1.688, 1.731, 1.648] + bar [2.051, 1.637, 1.709, 1.618] ``` --- @@ -69,4 +69,4 @@ xychart-beta View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-13T00:28:35.383Z* +*Last generated: 2025-11-14T00:28:50.468Z* diff --git a/docs/docs/benchmarks/DataDrivenTests.md b/docs/docs/benchmarks/DataDrivenTests.md index f09041fc89..30159bff85 100644 --- a/docs/docs/benchmarks/DataDrivenTests.md +++ b/docs/docs/benchmarks/DataDrivenTests.md @@ -7,7 +7,7 @@ sidebar_position: 3 # DataDrivenTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-13** from the latest CI run. +This benchmark was automatically generated on **2025-11-14** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 486.77 ms | 486.53 ms | 3.791 ms | -| NUnit | 4.4.0 | 589.92 ms | 591.78 ms | 12.153 ms | -| MSTest | 4.0.2 | 605.63 ms | 602.89 ms | 14.207 ms | -| xUnit3 | 3.2.0 | 600.41 ms | 597.06 ms | 10.504 ms | -| **TUnit (AOT)** | 1.1.0 | 24.05 ms | 24.05 ms | 0.239 ms | +| **TUnit** | 1.1.10 | 486.00 ms | 486.93 ms | 2.911 ms | +| NUnit | 4.4.0 | 587.97 ms | 586.01 ms | 10.141 ms | +| MSTest | 4.0.2 | 606.98 ms | 607.45 ms | 10.647 ms | +| xUnit3 | 3.2.0 | 599.37 ms | 599.31 ms | 9.447 ms | +| **TUnit (AOT)** | 1.1.10 | 23.70 ms | 23.74 ms | 0.136 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI xychart-beta title "DataDrivenTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 727 - bar [486.77, 589.92, 605.63, 600.41, 24.05] + y-axis "Time (ms)" 0 --> 729 + bar [486, 587.97, 606.98, 599.37, 23.7] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-13T00:28:35.381Z* +*Last generated: 2025-11-14T00:28:50.466Z* diff --git a/docs/docs/benchmarks/MassiveParallelTests.md b/docs/docs/benchmarks/MassiveParallelTests.md index 3d5370e19a..04a312e769 100644 --- a/docs/docs/benchmarks/MassiveParallelTests.md +++ b/docs/docs/benchmarks/MassiveParallelTests.md @@ -7,7 +7,7 @@ sidebar_position: 4 # MassiveParallelTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-13** from the latest CI run. +This benchmark was automatically generated on **2025-11-14** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 601.9 ms | 602.5 ms | 2.97 ms | -| NUnit | 4.4.0 | 1,181.6 ms | 1,177.9 ms | 13.31 ms | -| MSTest | 4.0.2 | 2,965.3 ms | 2,966.7 ms | 6.96 ms | -| xUnit3 | 3.2.0 | 3,066.6 ms | 3,066.7 ms | 6.78 ms | -| **TUnit (AOT)** | 1.1.0 | 131.6 ms | 131.7 ms | 0.37 ms | +| **TUnit** | 1.1.10 | 613.8 ms | 613.2 ms | 4.83 ms | +| NUnit | 4.4.0 | 1,216.8 ms | 1,214.5 ms | 9.48 ms | +| MSTest | 4.0.2 | 2,992.2 ms | 2,990.5 ms | 13.72 ms | +| xUnit3 | 3.2.0 | 3,088.0 ms | 3,087.1 ms | 9.69 ms | +| **TUnit (AOT)** | 1.1.10 | 131.8 ms | 131.9 ms | 0.45 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI xychart-beta title "MassiveParallelTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 3680 - bar [601.9, 1181.6, 2965.3, 3066.6, 131.6] + y-axis "Time (ms)" 0 --> 3706 + bar [613.8, 1216.8, 2992.2, 3088, 131.8] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-13T00:28:35.381Z* +*Last generated: 2025-11-14T00:28:50.466Z* diff --git a/docs/docs/benchmarks/MatrixTests.md b/docs/docs/benchmarks/MatrixTests.md index 27168e700e..7c5ccf8bb6 100644 --- a/docs/docs/benchmarks/MatrixTests.md +++ b/docs/docs/benchmarks/MatrixTests.md @@ -7,7 +7,7 @@ sidebar_position: 5 # MatrixTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-13** from the latest CI run. +This benchmark was automatically generated on **2025-11-14** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 570.36 ms | 570.43 ms | 4.980 ms | -| NUnit | 4.4.0 | 1,565.27 ms | 1,565.69 ms | 5.876 ms | -| MSTest | 4.0.2 | 1,523.48 ms | 1,521.53 ms | 8.270 ms | -| xUnit3 | 3.2.0 | 1,605.46 ms | 1,605.92 ms | 7.776 ms | -| **TUnit (AOT)** | 1.1.0 | 79.85 ms | 79.80 ms | 0.324 ms | +| **TUnit** | 1.1.10 | 554.66 ms | 554.27 ms | 3.979 ms | +| NUnit | 4.4.0 | 1,521.00 ms | 1,519.64 ms | 8.186 ms | +| MSTest | 4.0.2 | 1,480.94 ms | 1,479.41 ms | 8.867 ms | +| xUnit3 | 3.2.0 | 1,568.45 ms | 1,568.35 ms | 6.902 ms | +| **TUnit (AOT)** | 1.1.10 | 77.76 ms | 77.77 ms | 0.199 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI xychart-beta title "MatrixTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 1927 - bar [570.36, 1565.27, 1523.48, 1605.46, 79.85] + y-axis "Time (ms)" 0 --> 1883 + bar [554.66, 1521, 1480.94, 1568.45, 77.76] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-13T00:28:35.381Z* +*Last generated: 2025-11-14T00:28:50.467Z* diff --git a/docs/docs/benchmarks/ScaleTests.md b/docs/docs/benchmarks/ScaleTests.md index ad47b9ed23..d5ecc51c97 100644 --- a/docs/docs/benchmarks/ScaleTests.md +++ b/docs/docs/benchmarks/ScaleTests.md @@ -7,7 +7,7 @@ sidebar_position: 6 # ScaleTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-13** from the latest CI run. +This benchmark was automatically generated on **2025-11-14** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 516.15 ms | 515.58 ms | 7.373 ms | -| NUnit | 4.4.0 | 582.62 ms | 580.89 ms | 8.879 ms | -| MSTest | 4.0.2 | 564.54 ms | 562.45 ms | 7.780 ms | -| xUnit3 | 3.2.0 | 578.98 ms | 576.98 ms | 9.057 ms | -| **TUnit (AOT)** | 1.1.0 | 44.37 ms | 44.24 ms | 3.944 ms | +| **TUnit** | 1.1.10 | 505.85 ms | 505.28 ms | 2.469 ms | +| NUnit | 4.4.0 | 684.72 ms | 681.86 ms | 16.921 ms | +| MSTest | 4.0.2 | 669.43 ms | 669.54 ms | 13.552 ms | +| xUnit3 | 3.2.0 | 684.21 ms | 676.60 ms | 15.666 ms | +| **TUnit (AOT)** | 1.1.10 | 44.88 ms | 44.70 ms | 3.904 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI xychart-beta title "ScaleTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 700 - bar [516.15, 582.62, 564.54, 578.98, 44.37] + y-axis "Time (ms)" 0 --> 822 + bar [505.85, 684.72, 669.43, 684.21, 44.88] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-13T00:28:35.382Z* +*Last generated: 2025-11-14T00:28:50.467Z* diff --git a/docs/docs/benchmarks/SetupTeardownTests.md b/docs/docs/benchmarks/SetupTeardownTests.md index cbea02129f..929d854248 100644 --- a/docs/docs/benchmarks/SetupTeardownTests.md +++ b/docs/docs/benchmarks/SetupTeardownTests.md @@ -7,7 +7,7 @@ sidebar_position: 7 # SetupTeardownTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-13** from the latest CI run. +This benchmark was automatically generated on **2025-11-14** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.0 | 562.2 ms | 561.5 ms | 4.24 ms | -| NUnit | 4.4.0 | 1,173.5 ms | 1,173.5 ms | 9.02 ms | -| MSTest | 4.0.2 | 1,146.7 ms | 1,145.3 ms | 16.63 ms | -| xUnit3 | 3.2.0 | 1,216.8 ms | 1,217.2 ms | 5.86 ms | -| **TUnit (AOT)** | 1.1.0 | NA | NA | NA | +| **TUnit** | 1.1.10 | 559.8 ms | 560.2 ms | 3.75 ms | +| NUnit | 4.4.0 | 1,135.0 ms | 1,132.6 ms | 11.31 ms | +| MSTest | 4.0.2 | 1,108.5 ms | 1,107.1 ms | 8.11 ms | +| xUnit3 | 3.2.0 | 1,186.2 ms | 1,186.3 ms | 6.25 ms | +| **TUnit (AOT)** | 1.1.10 | NA | NA | NA | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-13** from the latest CI xychart-beta title "SetupTeardownTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 1461 - bar [562.2, 1173.5, 1146.7, 1216.8, 0] + y-axis "Time (ms)" 0 --> 1424 + bar [559.8, 1135, 1108.5, 1186.2, 0] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-13T00:28:35.382Z* +*Last generated: 2025-11-14T00:28:50.467Z* diff --git a/docs/docs/benchmarks/index.md b/docs/docs/benchmarks/index.md index 712902a439..0d6d91c7e0 100644 --- a/docs/docs/benchmarks/index.md +++ b/docs/docs/benchmarks/index.md @@ -7,7 +7,7 @@ sidebar_position: 1 # Performance Benchmarks :::info Last Updated -These benchmarks were automatically generated on **2025-11-13** from the latest CI run. +These benchmarks were automatically generated on **2025-11-14** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -37,7 +37,7 @@ These benchmarks compare TUnit against the most popular .NET testing frameworks: | Framework | Version Tested | |-----------|----------------| -| **TUnit** | 1.1.0 | +| **TUnit** | 1.1.10 | | **xUnit v3** | 3.2.0 | | **NUnit** | 4.4.0 | | **MSTest** | 4.0.2 | @@ -80,4 +80,4 @@ These benchmarks run automatically daily via [GitHub Actions](https://github.com Each benchmark runs multiple iterations with statistical analysis to ensure accuracy. Results may vary based on hardware and test characteristics. ::: -*Last generated: 2025-11-13T00:28:35.383Z* +*Last generated: 2025-11-14T00:28:50.468Z* diff --git a/docs/static/benchmarks/AsyncTests.json b/docs/static/benchmarks/AsyncTests.json index a80f44cd3c..a3e04863e0 100644 --- a/docs/static/benchmarks/AsyncTests.json +++ b/docs/static/benchmarks/AsyncTests.json @@ -1,5 +1,5 @@ { - "timestamp": "2025-11-13T00:28:35.381Z", + "timestamp": "2025-11-14T00:28:50.466Z", "category": "AsyncTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", @@ -9,43 +9,43 @@ "results": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "551.3 ms", - "Error": "2.23 ms", - "StdDev": "1.86 ms", - "Median": "551.1 ms" + "Version": "1.1.10", + "Mean": "565.6 ms", + "Error": "4.72 ms", + "StdDev": "3.94 ms", + "Median": "564.2 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "639.4 ms", - "Error": "11.51 ms", - "StdDev": "10.77 ms", - "Median": "634.6 ms" + "Mean": "681.8 ms", + "Error": "5.30 ms", + "StdDev": "4.42 ms", + "Median": "682.0 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "612.9 ms", - "Error": "10.30 ms", - "StdDev": "9.13 ms", - "Median": "611.2 ms" + "Mean": "654.5 ms", + "Error": "7.43 ms", + "StdDev": "6.20 ms", + "Median": "653.4 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "692.8 ms", - "Error": "6.56 ms", - "StdDev": "5.81 ms", - "Median": "692.6 ms" + "Mean": "734.5 ms", + "Error": "9.42 ms", + "StdDev": "8.35 ms", + "Median": "736.6 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", - "Mean": "122.7 ms", - "Error": "0.47 ms", - "StdDev": "0.41 ms", - "Median": "122.8 ms" + "Version": "1.1.10", + "Mean": "124.2 ms", + "Error": "0.31 ms", + "StdDev": "0.29 ms", + "Median": "124.2 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/BuildTime.json b/docs/static/benchmarks/BuildTime.json index 1560b2e2ae..9c8b3c60c3 100644 --- a/docs/static/benchmarks/BuildTime.json +++ b/docs/static/benchmarks/BuildTime.json @@ -1,5 +1,5 @@ { - "timestamp": "2025-11-13T00:28:35.383Z", + "timestamp": "2025-11-14T00:28:50.468Z", "category": "BuildTime", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", @@ -9,35 +9,35 @@ "results": [ { "Method": "Build_TUnit", - "Version": "1.1.0", - "Mean": "2.100 s", - "Error": "0.0234 s", - "StdDev": "0.0207 s", - "Median": "2.101 s" + "Version": "1.1.10", + "Mean": "2.051 s", + "Error": "0.0306 s", + "StdDev": "0.0286 s", + "Median": "2.047 s" }, { "Method": "Build_NUnit", "Version": "4.4.0", - "Mean": "1.688 s", - "Error": "0.0229 s", - "StdDev": "0.0214 s", - "Median": "1.689 s" + "Mean": "1.637 s", + "Error": "0.0156 s", + "StdDev": "0.0138 s", + "Median": "1.634 s" }, { "Method": "Build_MSTest", "Version": "4.0.2", - "Mean": "1.731 s", - "Error": "0.0265 s", - "StdDev": "0.0235 s", - "Median": "1.733 s" + "Mean": "1.709 s", + "Error": "0.0103 s", + "StdDev": "0.0086 s", + "Median": "1.706 s" }, { "Method": "Build_xUnit3", "Version": "3.2.0", - "Mean": "1.648 s", - "Error": "0.0303 s", - "StdDev": "0.0283 s", - "Median": "1.639 s" + "Mean": "1.618 s", + "Error": "0.0193 s", + "StdDev": "0.0180 s", + "Median": "1.615 s" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/DataDrivenTests.json b/docs/static/benchmarks/DataDrivenTests.json index 8d566f7430..195c5c1627 100644 --- a/docs/static/benchmarks/DataDrivenTests.json +++ b/docs/static/benchmarks/DataDrivenTests.json @@ -1,5 +1,5 @@ { - "timestamp": "2025-11-13T00:28:35.381Z", + "timestamp": "2025-11-14T00:28:50.466Z", "category": "DataDrivenTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", @@ -9,43 +9,43 @@ "results": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "486.77 ms", - "Error": "4.539 ms", - "StdDev": "3.791 ms", - "Median": "486.53 ms" + "Version": "1.1.10", + "Mean": "486.00 ms", + "Error": "3.113 ms", + "StdDev": "2.911 ms", + "Median": "486.93 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "589.92 ms", - "Error": "11.358 ms", - "StdDev": "12.153 ms", - "Median": "591.78 ms" + "Mean": "587.97 ms", + "Error": "11.440 ms", + "StdDev": "10.141 ms", + "Median": "586.01 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "605.63 ms", - "Error": "11.934 ms", - "StdDev": "14.207 ms", - "Median": "602.89 ms" + "Mean": "606.98 ms", + "Error": "11.382 ms", + "StdDev": "10.647 ms", + "Median": "607.45 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "600.41 ms", - "Error": "11.230 ms", - "StdDev": "10.504 ms", - "Median": "597.06 ms" + "Mean": "599.37 ms", + "Error": "10.657 ms", + "StdDev": "9.447 ms", + "Median": "599.31 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", - "Mean": "24.05 ms", - "Error": "0.255 ms", - "StdDev": "0.239 ms", - "Median": "24.05 ms" + "Version": "1.1.10", + "Mean": "23.70 ms", + "Error": "0.153 ms", + "StdDev": "0.136 ms", + "Median": "23.74 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/MassiveParallelTests.json b/docs/static/benchmarks/MassiveParallelTests.json index 6a32ec791c..786ff6fee6 100644 --- a/docs/static/benchmarks/MassiveParallelTests.json +++ b/docs/static/benchmarks/MassiveParallelTests.json @@ -1,5 +1,5 @@ { - "timestamp": "2025-11-13T00:28:35.381Z", + "timestamp": "2025-11-14T00:28:50.466Z", "category": "MassiveParallelTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", @@ -9,43 +9,43 @@ "results": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "601.9 ms", - "Error": "3.35 ms", - "StdDev": "2.97 ms", - "Median": "602.5 ms" + "Version": "1.1.10", + "Mean": "613.8 ms", + "Error": "5.44 ms", + "StdDev": "4.83 ms", + "Median": "613.2 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,181.6 ms", - "Error": "15.01 ms", - "StdDev": "13.31 ms", - "Median": "1,177.9 ms" + "Mean": "1,216.8 ms", + "Error": "10.69 ms", + "StdDev": "9.48 ms", + "Median": "1,214.5 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "2,965.3 ms", - "Error": "7.85 ms", - "StdDev": "6.96 ms", - "Median": "2,966.7 ms" + "Mean": "2,992.2 ms", + "Error": "14.67 ms", + "StdDev": "13.72 ms", + "Median": "2,990.5 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "3,066.6 ms", - "Error": "7.64 ms", - "StdDev": "6.78 ms", - "Median": "3,066.7 ms" + "Mean": "3,088.0 ms", + "Error": "10.93 ms", + "StdDev": "9.69 ms", + "Median": "3,087.1 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", - "Mean": "131.6 ms", - "Error": "0.39 ms", - "StdDev": "0.37 ms", - "Median": "131.7 ms" + "Version": "1.1.10", + "Mean": "131.8 ms", + "Error": "0.51 ms", + "StdDev": "0.45 ms", + "Median": "131.9 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/MatrixTests.json b/docs/static/benchmarks/MatrixTests.json index 228fc05585..2589e12bd2 100644 --- a/docs/static/benchmarks/MatrixTests.json +++ b/docs/static/benchmarks/MatrixTests.json @@ -1,5 +1,5 @@ { - "timestamp": "2025-11-13T00:28:35.382Z", + "timestamp": "2025-11-14T00:28:50.467Z", "category": "MatrixTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", @@ -9,43 +9,43 @@ "results": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "570.36 ms", - "Error": "5.617 ms", - "StdDev": "4.980 ms", - "Median": "570.43 ms" + "Version": "1.1.10", + "Mean": "554.66 ms", + "Error": "4.254 ms", + "StdDev": "3.979 ms", + "Median": "554.27 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,565.27 ms", - "Error": "6.629 ms", - "StdDev": "5.876 ms", - "Median": "1,565.69 ms" + "Mean": "1,521.00 ms", + "Error": "9.234 ms", + "StdDev": "8.186 ms", + "Median": "1,519.64 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,523.48 ms", - "Error": "9.329 ms", - "StdDev": "8.270 ms", - "Median": "1,521.53 ms" + "Mean": "1,480.94 ms", + "Error": "10.002 ms", + "StdDev": "8.867 ms", + "Median": "1,479.41 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,605.46 ms", - "Error": "8.313 ms", - "StdDev": "7.776 ms", - "Median": "1,605.92 ms" + "Mean": "1,568.45 ms", + "Error": "7.786 ms", + "StdDev": "6.902 ms", + "Median": "1,568.35 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", - "Mean": "79.85 ms", - "Error": "0.366 ms", - "StdDev": "0.324 ms", - "Median": "79.80 ms" + "Version": "1.1.10", + "Mean": "77.76 ms", + "Error": "0.225 ms", + "StdDev": "0.199 ms", + "Median": "77.77 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/ScaleTests.json b/docs/static/benchmarks/ScaleTests.json index e6b0bd67da..07eb91f7ba 100644 --- a/docs/static/benchmarks/ScaleTests.json +++ b/docs/static/benchmarks/ScaleTests.json @@ -1,5 +1,5 @@ { - "timestamp": "2025-11-13T00:28:35.382Z", + "timestamp": "2025-11-14T00:28:50.467Z", "category": "ScaleTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", @@ -9,43 +9,43 @@ "results": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "516.15 ms", - "Error": "7.882 ms", - "StdDev": "7.373 ms", - "Median": "515.58 ms" + "Version": "1.1.10", + "Mean": "505.85 ms", + "Error": "2.785 ms", + "StdDev": "2.469 ms", + "Median": "505.28 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "582.62 ms", - "Error": "10.017 ms", - "StdDev": "8.879 ms", - "Median": "580.89 ms" + "Mean": "684.72 ms", + "Error": "13.380 ms", + "StdDev": "16.921 ms", + "Median": "681.86 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "564.54 ms", - "Error": "8.777 ms", - "StdDev": "7.780 ms", - "Median": "562.45 ms" + "Mean": "669.43 ms", + "Error": "13.197 ms", + "StdDev": "13.552 ms", + "Median": "669.54 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "578.98 ms", - "Error": "10.217 ms", - "StdDev": "9.057 ms", - "Median": "576.98 ms" + "Mean": "684.21 ms", + "Error": "13.160 ms", + "StdDev": "15.666 ms", + "Median": "676.60 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", - "Mean": "44.37 ms", - "Error": "1.338 ms", - "StdDev": "3.944 ms", - "Median": "44.24 ms" + "Version": "1.1.10", + "Mean": "44.88 ms", + "Error": "1.324 ms", + "StdDev": "3.904 ms", + "Median": "44.70 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/SetupTeardownTests.json b/docs/static/benchmarks/SetupTeardownTests.json index 0f70c9e758..9859581e8a 100644 --- a/docs/static/benchmarks/SetupTeardownTests.json +++ b/docs/static/benchmarks/SetupTeardownTests.json @@ -1,5 +1,5 @@ { - "timestamp": "2025-11-13T00:28:35.382Z", + "timestamp": "2025-11-14T00:28:50.467Z", "category": "SetupTeardownTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", @@ -9,39 +9,39 @@ "results": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "562.2 ms", - "Error": "4.53 ms", - "StdDev": "4.24 ms", - "Median": "561.5 ms" + "Version": "1.1.10", + "Mean": "559.8 ms", + "Error": "4.23 ms", + "StdDev": "3.75 ms", + "Median": "560.2 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,173.5 ms", - "Error": "9.64 ms", - "StdDev": "9.02 ms", - "Median": "1,173.5 ms" + "Mean": "1,135.0 ms", + "Error": "12.10 ms", + "StdDev": "11.31 ms", + "Median": "1,132.6 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,146.7 ms", - "Error": "18.76 ms", - "StdDev": "16.63 ms", - "Median": "1,145.3 ms" + "Mean": "1,108.5 ms", + "Error": "8.67 ms", + "StdDev": "8.11 ms", + "Median": "1,107.1 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,216.8 ms", - "Error": "6.27 ms", - "StdDev": "5.86 ms", - "Median": "1,217.2 ms" + "Mean": "1,186.2 ms", + "Error": "7.48 ms", + "StdDev": "6.25 ms", + "Median": "1,186.3 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", + "Version": "1.1.10", "Mean": "NA", "Error": "NA", "StdDev": "NA", diff --git a/docs/static/benchmarks/historical.json b/docs/static/benchmarks/historical.json index ce726f2385..6aa3f22f96 100644 --- a/docs/static/benchmarks/historical.json +++ b/docs/static/benchmarks/historical.json @@ -34,5 +34,9 @@ { "date": "2025-11-13", "environment": "Ubuntu" + }, + { + "date": "2025-11-14", + "environment": "Ubuntu" } ] \ No newline at end of file diff --git a/docs/static/benchmarks/latest.json b/docs/static/benchmarks/latest.json index 0a206bd729..c4ce7506d2 100644 --- a/docs/static/benchmarks/latest.json +++ b/docs/static/benchmarks/latest.json @@ -1,5 +1,5 @@ { - "timestamp": "2025-11-13T00:28:35.383Z", + "timestamp": "2025-11-14T00:28:50.468Z", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", @@ -9,249 +9,249 @@ "AsyncTests": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "551.3 ms", - "Error": "2.23 ms", - "StdDev": "1.86 ms", - "Median": "551.1 ms" + "Version": "1.1.10", + "Mean": "565.6 ms", + "Error": "4.72 ms", + "StdDev": "3.94 ms", + "Median": "564.2 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "639.4 ms", - "Error": "11.51 ms", - "StdDev": "10.77 ms", - "Median": "634.6 ms" + "Mean": "681.8 ms", + "Error": "5.30 ms", + "StdDev": "4.42 ms", + "Median": "682.0 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "612.9 ms", - "Error": "10.30 ms", - "StdDev": "9.13 ms", - "Median": "611.2 ms" + "Mean": "654.5 ms", + "Error": "7.43 ms", + "StdDev": "6.20 ms", + "Median": "653.4 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "692.8 ms", - "Error": "6.56 ms", - "StdDev": "5.81 ms", - "Median": "692.6 ms" + "Mean": "734.5 ms", + "Error": "9.42 ms", + "StdDev": "8.35 ms", + "Median": "736.6 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", - "Mean": "122.7 ms", - "Error": "0.47 ms", - "StdDev": "0.41 ms", - "Median": "122.8 ms" + "Version": "1.1.10", + "Mean": "124.2 ms", + "Error": "0.31 ms", + "StdDev": "0.29 ms", + "Median": "124.2 ms" } ], "DataDrivenTests": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "486.77 ms", - "Error": "4.539 ms", - "StdDev": "3.791 ms", - "Median": "486.53 ms" + "Version": "1.1.10", + "Mean": "486.00 ms", + "Error": "3.113 ms", + "StdDev": "2.911 ms", + "Median": "486.93 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "589.92 ms", - "Error": "11.358 ms", - "StdDev": "12.153 ms", - "Median": "591.78 ms" + "Mean": "587.97 ms", + "Error": "11.440 ms", + "StdDev": "10.141 ms", + "Median": "586.01 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "605.63 ms", - "Error": "11.934 ms", - "StdDev": "14.207 ms", - "Median": "602.89 ms" + "Mean": "606.98 ms", + "Error": "11.382 ms", + "StdDev": "10.647 ms", + "Median": "607.45 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "600.41 ms", - "Error": "11.230 ms", - "StdDev": "10.504 ms", - "Median": "597.06 ms" + "Mean": "599.37 ms", + "Error": "10.657 ms", + "StdDev": "9.447 ms", + "Median": "599.31 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", - "Mean": "24.05 ms", - "Error": "0.255 ms", - "StdDev": "0.239 ms", - "Median": "24.05 ms" + "Version": "1.1.10", + "Mean": "23.70 ms", + "Error": "0.153 ms", + "StdDev": "0.136 ms", + "Median": "23.74 ms" } ], "MassiveParallelTests": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "601.9 ms", - "Error": "3.35 ms", - "StdDev": "2.97 ms", - "Median": "602.5 ms" + "Version": "1.1.10", + "Mean": "613.8 ms", + "Error": "5.44 ms", + "StdDev": "4.83 ms", + "Median": "613.2 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,181.6 ms", - "Error": "15.01 ms", - "StdDev": "13.31 ms", - "Median": "1,177.9 ms" + "Mean": "1,216.8 ms", + "Error": "10.69 ms", + "StdDev": "9.48 ms", + "Median": "1,214.5 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "2,965.3 ms", - "Error": "7.85 ms", - "StdDev": "6.96 ms", - "Median": "2,966.7 ms" + "Mean": "2,992.2 ms", + "Error": "14.67 ms", + "StdDev": "13.72 ms", + "Median": "2,990.5 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "3,066.6 ms", - "Error": "7.64 ms", - "StdDev": "6.78 ms", - "Median": "3,066.7 ms" + "Mean": "3,088.0 ms", + "Error": "10.93 ms", + "StdDev": "9.69 ms", + "Median": "3,087.1 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", - "Mean": "131.6 ms", - "Error": "0.39 ms", - "StdDev": "0.37 ms", - "Median": "131.7 ms" + "Version": "1.1.10", + "Mean": "131.8 ms", + "Error": "0.51 ms", + "StdDev": "0.45 ms", + "Median": "131.9 ms" } ], "MatrixTests": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "570.36 ms", - "Error": "5.617 ms", - "StdDev": "4.980 ms", - "Median": "570.43 ms" + "Version": "1.1.10", + "Mean": "554.66 ms", + "Error": "4.254 ms", + "StdDev": "3.979 ms", + "Median": "554.27 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,565.27 ms", - "Error": "6.629 ms", - "StdDev": "5.876 ms", - "Median": "1,565.69 ms" + "Mean": "1,521.00 ms", + "Error": "9.234 ms", + "StdDev": "8.186 ms", + "Median": "1,519.64 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,523.48 ms", - "Error": "9.329 ms", - "StdDev": "8.270 ms", - "Median": "1,521.53 ms" + "Mean": "1,480.94 ms", + "Error": "10.002 ms", + "StdDev": "8.867 ms", + "Median": "1,479.41 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,605.46 ms", - "Error": "8.313 ms", - "StdDev": "7.776 ms", - "Median": "1,605.92 ms" + "Mean": "1,568.45 ms", + "Error": "7.786 ms", + "StdDev": "6.902 ms", + "Median": "1,568.35 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", - "Mean": "79.85 ms", - "Error": "0.366 ms", - "StdDev": "0.324 ms", - "Median": "79.80 ms" + "Version": "1.1.10", + "Mean": "77.76 ms", + "Error": "0.225 ms", + "StdDev": "0.199 ms", + "Median": "77.77 ms" } ], "ScaleTests": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "516.15 ms", - "Error": "7.882 ms", - "StdDev": "7.373 ms", - "Median": "515.58 ms" + "Version": "1.1.10", + "Mean": "505.85 ms", + "Error": "2.785 ms", + "StdDev": "2.469 ms", + "Median": "505.28 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "582.62 ms", - "Error": "10.017 ms", - "StdDev": "8.879 ms", - "Median": "580.89 ms" + "Mean": "684.72 ms", + "Error": "13.380 ms", + "StdDev": "16.921 ms", + "Median": "681.86 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "564.54 ms", - "Error": "8.777 ms", - "StdDev": "7.780 ms", - "Median": "562.45 ms" + "Mean": "669.43 ms", + "Error": "13.197 ms", + "StdDev": "13.552 ms", + "Median": "669.54 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "578.98 ms", - "Error": "10.217 ms", - "StdDev": "9.057 ms", - "Median": "576.98 ms" + "Mean": "684.21 ms", + "Error": "13.160 ms", + "StdDev": "15.666 ms", + "Median": "676.60 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", - "Mean": "44.37 ms", - "Error": "1.338 ms", - "StdDev": "3.944 ms", - "Median": "44.24 ms" + "Version": "1.1.10", + "Mean": "44.88 ms", + "Error": "1.324 ms", + "StdDev": "3.904 ms", + "Median": "44.70 ms" } ], "SetupTeardownTests": [ { "Method": "TUnit", - "Version": "1.1.0", - "Mean": "562.2 ms", - "Error": "4.53 ms", - "StdDev": "4.24 ms", - "Median": "561.5 ms" + "Version": "1.1.10", + "Mean": "559.8 ms", + "Error": "4.23 ms", + "StdDev": "3.75 ms", + "Median": "560.2 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,173.5 ms", - "Error": "9.64 ms", - "StdDev": "9.02 ms", - "Median": "1,173.5 ms" + "Mean": "1,135.0 ms", + "Error": "12.10 ms", + "StdDev": "11.31 ms", + "Median": "1,132.6 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,146.7 ms", - "Error": "18.76 ms", - "StdDev": "16.63 ms", - "Median": "1,145.3 ms" + "Mean": "1,108.5 ms", + "Error": "8.67 ms", + "StdDev": "8.11 ms", + "Median": "1,107.1 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,216.8 ms", - "Error": "6.27 ms", - "StdDev": "5.86 ms", - "Median": "1,217.2 ms" + "Mean": "1,186.2 ms", + "Error": "7.48 ms", + "StdDev": "6.25 ms", + "Median": "1,186.3 ms" }, { "Method": "TUnit_AOT", - "Version": "1.1.0", + "Version": "1.1.10", "Mean": "NA", "Error": "NA", "StdDev": "NA", @@ -263,35 +263,35 @@ "BuildTime": [ { "Method": "Build_TUnit", - "Version": "1.1.0", - "Mean": "2.100 s", - "Error": "0.0234 s", - "StdDev": "0.0207 s", - "Median": "2.101 s" + "Version": "1.1.10", + "Mean": "2.051 s", + "Error": "0.0306 s", + "StdDev": "0.0286 s", + "Median": "2.047 s" }, { "Method": "Build_NUnit", "Version": "4.4.0", - "Mean": "1.688 s", - "Error": "0.0229 s", - "StdDev": "0.0214 s", - "Median": "1.689 s" + "Mean": "1.637 s", + "Error": "0.0156 s", + "StdDev": "0.0138 s", + "Median": "1.634 s" }, { "Method": "Build_MSTest", "Version": "4.0.2", - "Mean": "1.731 s", - "Error": "0.0265 s", - "StdDev": "0.0235 s", - "Median": "1.733 s" + "Mean": "1.709 s", + "Error": "0.0103 s", + "StdDev": "0.0086 s", + "Median": "1.706 s" }, { "Method": "Build_xUnit3", "Version": "3.2.0", - "Mean": "1.648 s", - "Error": "0.0303 s", - "StdDev": "0.0283 s", - "Median": "1.639 s" + "Mean": "1.618 s", + "Error": "0.0193 s", + "StdDev": "0.0180 s", + "Median": "1.615 s" } ] }, @@ -299,6 +299,6 @@ "runtimeCategories": 6, "buildCategories": 1, "totalBenchmarks": 7, - "lastUpdated": "2025-11-13T00:28:35.380Z" + "lastUpdated": "2025-11-14T00:28:50.465Z" } } \ No newline at end of file diff --git a/docs/static/benchmarks/summary.json b/docs/static/benchmarks/summary.json index 31d8bad9d5..56b733f715 100644 --- a/docs/static/benchmarks/summary.json +++ b/docs/static/benchmarks/summary.json @@ -10,6 +10,6 @@ "build": [ "BuildTime" ], - "timestamp": "2025-11-13", + "timestamp": "2025-11-14", "environment": "Ubuntu Latest • .NET SDK 10.0.100" } \ No newline at end of file From 6b07ac6377b5e5b12777f2e3e8f88f77c071a028 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:35:58 +0000 Subject: [PATCH 14/17] Clarify TUnit0046 diagnostic message for data source return types (#3843) * Initial plan * Update TUnit0046 analyzer message to be clearer Co-authored-by: thomhurst <30480171+thomhurst@users.noreply.github.com> * Update documentation for TUnit0046 to match new message Co-authored-by: thomhurst <30480171+thomhurst@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: thomhurst <30480171+thomhurst@users.noreply.github.com> --- TUnit.Analyzers/AnalyzerReleases.Shipped.md | 2 +- TUnit.Analyzers/Resources.resx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/TUnit.Analyzers/AnalyzerReleases.Shipped.md b/TUnit.Analyzers/AnalyzerReleases.Shipped.md index 3985959552..7438273863 100644 --- a/TUnit.Analyzers/AnalyzerReleases.Shipped.md +++ b/TUnit.Analyzers/AnalyzerReleases.Shipped.md @@ -28,7 +28,7 @@ TUnit0038 | Usage | Error | Property with data attribute must have a data source TUnit0043 | Usage | Error | Properties with data attributes must use 'required' keyword TUnit0044 | Usage | Error | Properties with data attributes must have a setter TUnit0045 | Usage | Error | Property has multiple data source attributes - use only one -TUnit0046 | Usage | Warning | Data source should return Func for lazy evaluation instead of T +TUnit0046 | Usage | Warning | Data source should return Func for reference types to ensure test isolation TUnit0049 | Usage | Error | [Matrix] parameters require [MatrixDataSource] attribute on the test method TUnit0050 | Usage | Error | Too many test arguments provided TUnit0056 | Usage | Error | Instance data source methods must use [InstanceMethodDataSource] attribute diff --git a/TUnit.Analyzers/Resources.resx b/TUnit.Analyzers/Resources.resx index b68d6eadff..4482dd6a1e 100644 --- a/TUnit.Analyzers/Resources.resx +++ b/TUnit.Analyzers/Resources.resx @@ -328,13 +328,13 @@ Too many data attributes - Return a `Func<T>` rather than a `<T>`. + When a data source method provides reference types (other than string) as test parameters, it should return Func<T> to defer object creation until the test runs. This prevents shared state between tests and ensures proper test isolation. - Return a `Func<T>` rather than a `<T>`. + Data source method should return Func<T> for reference type parameters (other than string) to ensure proper test isolation - Return a `Func<T>` rather than a `<T>` + Data source should return Func<T> for reference types For AsyncLocal values set in before hooks, you must call `context.AddAsyncLocalValues` to access them within tests. From 58b277c730a0bdfdd16932364fcac493af20d070 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 15 Nov 2025 00:27:24 +0000 Subject: [PATCH 15/17] chore: update benchmark results (#3844) --- docs/docs/benchmarks/AsyncTests.md | 18 +- docs/docs/benchmarks/BuildTime.md | 14 +- docs/docs/benchmarks/DataDrivenTests.md | 18 +- docs/docs/benchmarks/MassiveParallelTests.md | 18 +- docs/docs/benchmarks/MatrixTests.md | 18 +- docs/docs/benchmarks/ScaleTests.md | 18 +- docs/docs/benchmarks/SetupTeardownTests.md | 16 +- docs/docs/benchmarks/index.md | 6 +- docs/static/benchmarks/AsyncTests.json | 44 +-- docs/static/benchmarks/BuildTime.json | 36 +-- docs/static/benchmarks/DataDrivenTests.json | 44 +-- .../benchmarks/MassiveParallelTests.json | 44 +-- docs/static/benchmarks/MatrixTests.json | 44 +-- docs/static/benchmarks/ScaleTests.json | 44 +-- .../static/benchmarks/SetupTeardownTests.json | 36 +-- docs/static/benchmarks/historical.json | 4 + docs/static/benchmarks/latest.json | 270 +++++++++--------- docs/static/benchmarks/summary.json | 2 +- 18 files changed, 349 insertions(+), 345 deletions(-) diff --git a/docs/docs/benchmarks/AsyncTests.md b/docs/docs/benchmarks/AsyncTests.md index 569ebebef9..548e0174f2 100644 --- a/docs/docs/benchmarks/AsyncTests.md +++ b/docs/docs/benchmarks/AsyncTests.md @@ -7,7 +7,7 @@ sidebar_position: 2 # AsyncTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-14** from the latest CI run. +This benchmark was automatically generated on **2025-11-15** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.10 | 565.6 ms | 564.2 ms | 3.94 ms | -| NUnit | 4.4.0 | 681.8 ms | 682.0 ms | 4.42 ms | -| MSTest | 4.0.2 | 654.5 ms | 653.4 ms | 6.20 ms | -| xUnit3 | 3.2.0 | 734.5 ms | 736.6 ms | 8.35 ms | -| **TUnit (AOT)** | 1.1.10 | 124.2 ms | 124.2 ms | 0.29 ms | +| **TUnit** | 1.1.10 | 546.4 ms | 546.3 ms | 3.82 ms | +| NUnit | 4.4.0 | 647.1 ms | 642.5 ms | 9.04 ms | +| MSTest | 4.0.2 | 616.6 ms | 617.2 ms | 7.52 ms | +| xUnit3 | 3.2.0 | 693.2 ms | 692.8 ms | 5.17 ms | +| **TUnit (AOT)** | 1.1.10 | 123.7 ms | 123.7 ms | 0.39 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI xychart-beta title "AsyncTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 882 - bar [565.6, 681.8, 654.5, 734.5, 124.2] + y-axis "Time (ms)" 0 --> 832 + bar [546.4, 647.1, 616.6, 693.2, 123.7] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-14T00:28:50.466Z* +*Last generated: 2025-11-15T00:27:09.502Z* diff --git a/docs/docs/benchmarks/BuildTime.md b/docs/docs/benchmarks/BuildTime.md index 222d322fbb..8519936150 100644 --- a/docs/docs/benchmarks/BuildTime.md +++ b/docs/docs/benchmarks/BuildTime.md @@ -7,7 +7,7 @@ sidebar_position: 8 # Build Performance Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-14** from the latest CI run. +This benchmark was automatically generated on **2025-11-15** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -18,10 +18,10 @@ Compilation time comparison across frameworks: | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.10 | 2.051 s | 2.047 s | 0.0286 s | -| Build_NUnit | 4.4.0 | 1.637 s | 1.634 s | 0.0138 s | -| Build_MSTest | 4.0.2 | 1.709 s | 1.706 s | 0.0086 s | -| Build_xUnit3 | 3.2.0 | 1.618 s | 1.615 s | 0.0180 s | +| **TUnit** | 1.1.10 | 2.104 s | 2.097 s | 0.0487 s | +| Build_NUnit | 4.4.0 | 1.658 s | 1.652 s | 0.0272 s | +| Build_MSTest | 4.0.2 | 1.751 s | 1.748 s | 0.0404 s | +| Build_xUnit3 | 3.2.0 | 1.643 s | 1.644 s | 0.0204 s | ## 📈 Visual Comparison @@ -60,7 +60,7 @@ xychart-beta title "Build Time Comparison" x-axis ["Build_TUnit", "Build_NUnit", "Build_MSTest", "Build_xUnit3"] y-axis "Time (s)" 0 --> 3 - bar [2.051, 1.637, 1.709, 1.618] + bar [2.104, 1.658, 1.751, 1.643] ``` --- @@ -69,4 +69,4 @@ xychart-beta View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-14T00:28:50.468Z* +*Last generated: 2025-11-15T00:27:09.505Z* diff --git a/docs/docs/benchmarks/DataDrivenTests.md b/docs/docs/benchmarks/DataDrivenTests.md index 30159bff85..6532bf2b9a 100644 --- a/docs/docs/benchmarks/DataDrivenTests.md +++ b/docs/docs/benchmarks/DataDrivenTests.md @@ -7,7 +7,7 @@ sidebar_position: 3 # DataDrivenTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-14** from the latest CI run. +This benchmark was automatically generated on **2025-11-15** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.10 | 486.00 ms | 486.93 ms | 2.911 ms | -| NUnit | 4.4.0 | 587.97 ms | 586.01 ms | 10.141 ms | -| MSTest | 4.0.2 | 606.98 ms | 607.45 ms | 10.647 ms | -| xUnit3 | 3.2.0 | 599.37 ms | 599.31 ms | 9.447 ms | -| **TUnit (AOT)** | 1.1.10 | 23.70 ms | 23.74 ms | 0.136 ms | +| **TUnit** | 1.1.10 | 493.28 ms | 491.72 ms | 5.477 ms | +| NUnit | 4.4.0 | 527.71 ms | 528.80 ms | 6.631 ms | +| MSTest | 4.0.2 | 499.80 ms | 496.67 ms | 18.060 ms | +| xUnit3 | 3.2.0 | 571.43 ms | 570.30 ms | 9.897 ms | +| **TUnit (AOT)** | 1.1.10 | 24.09 ms | 24.07 ms | 0.146 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI xychart-beta title "DataDrivenTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 729 - bar [486, 587.97, 606.98, 599.37, 23.7] + y-axis "Time (ms)" 0 --> 686 + bar [493.28, 527.71, 499.8, 571.43, 24.09] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-14T00:28:50.466Z* +*Last generated: 2025-11-15T00:27:09.503Z* diff --git a/docs/docs/benchmarks/MassiveParallelTests.md b/docs/docs/benchmarks/MassiveParallelTests.md index 04a312e769..cc36aaf4c1 100644 --- a/docs/docs/benchmarks/MassiveParallelTests.md +++ b/docs/docs/benchmarks/MassiveParallelTests.md @@ -7,7 +7,7 @@ sidebar_position: 4 # MassiveParallelTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-14** from the latest CI run. +This benchmark was automatically generated on **2025-11-15** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.10 | 613.8 ms | 613.2 ms | 4.83 ms | -| NUnit | 4.4.0 | 1,216.8 ms | 1,214.5 ms | 9.48 ms | -| MSTest | 4.0.2 | 2,992.2 ms | 2,990.5 ms | 13.72 ms | -| xUnit3 | 3.2.0 | 3,088.0 ms | 3,087.1 ms | 9.69 ms | -| **TUnit (AOT)** | 1.1.10 | 131.8 ms | 131.9 ms | 0.45 ms | +| **TUnit** | 1.1.10 | 605.7 ms | 603.9 ms | 6.52 ms | +| NUnit | 4.4.0 | 1,177.6 ms | 1,177.8 ms | 6.41 ms | +| MSTest | 4.0.2 | 2,951.3 ms | 2,951.9 ms | 6.75 ms | +| xUnit3 | 3.2.0 | 3,050.0 ms | 3,050.0 ms | 7.02 ms | +| **TUnit (AOT)** | 1.1.10 | 130.9 ms | 130.7 ms | 0.38 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI xychart-beta title "MassiveParallelTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 3706 - bar [613.8, 1216.8, 2992.2, 3088, 131.8] + y-axis "Time (ms)" 0 --> 3660 + bar [605.7, 1177.6, 2951.3, 3050, 130.9] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-14T00:28:50.466Z* +*Last generated: 2025-11-15T00:27:09.503Z* diff --git a/docs/docs/benchmarks/MatrixTests.md b/docs/docs/benchmarks/MatrixTests.md index 7c5ccf8bb6..dd935dbdbb 100644 --- a/docs/docs/benchmarks/MatrixTests.md +++ b/docs/docs/benchmarks/MatrixTests.md @@ -7,7 +7,7 @@ sidebar_position: 5 # MatrixTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-14** from the latest CI run. +This benchmark was automatically generated on **2025-11-15** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.10 | 554.66 ms | 554.27 ms | 3.979 ms | -| NUnit | 4.4.0 | 1,521.00 ms | 1,519.64 ms | 8.186 ms | -| MSTest | 4.0.2 | 1,480.94 ms | 1,479.41 ms | 8.867 ms | -| xUnit3 | 3.2.0 | 1,568.45 ms | 1,568.35 ms | 6.902 ms | -| **TUnit (AOT)** | 1.1.10 | 77.76 ms | 77.77 ms | 0.199 ms | +| **TUnit** | 1.1.10 | 563.80 ms | 562.94 ms | 7.113 ms | +| NUnit | 4.4.0 | 1,538.27 ms | 1,538.35 ms | 11.633 ms | +| MSTest | 4.0.2 | 1,497.90 ms | 1,490.67 ms | 14.759 ms | +| xUnit3 | 3.2.0 | 1,579.28 ms | 1,578.51 ms | 6.673 ms | +| **TUnit (AOT)** | 1.1.10 | 78.71 ms | 78.69 ms | 0.421 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI xychart-beta title "MatrixTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 1883 - bar [554.66, 1521, 1480.94, 1568.45, 77.76] + y-axis "Time (ms)" 0 --> 1896 + bar [563.8, 1538.27, 1497.9, 1579.28, 78.71] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-14T00:28:50.467Z* +*Last generated: 2025-11-15T00:27:09.503Z* diff --git a/docs/docs/benchmarks/ScaleTests.md b/docs/docs/benchmarks/ScaleTests.md index d5ecc51c97..5fb9e7d4bb 100644 --- a/docs/docs/benchmarks/ScaleTests.md +++ b/docs/docs/benchmarks/ScaleTests.md @@ -7,7 +7,7 @@ sidebar_position: 6 # ScaleTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-14** from the latest CI run. +This benchmark was automatically generated on **2025-11-15** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,11 +16,11 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.10 | 505.85 ms | 505.28 ms | 2.469 ms | -| NUnit | 4.4.0 | 684.72 ms | 681.86 ms | 16.921 ms | -| MSTest | 4.0.2 | 669.43 ms | 669.54 ms | 13.552 ms | -| xUnit3 | 3.2.0 | 684.21 ms | 676.60 ms | 15.666 ms | -| **TUnit (AOT)** | 1.1.10 | 44.88 ms | 44.70 ms | 3.904 ms | +| **TUnit** | 1.1.10 | 484.97 ms | 485.22 ms | 3.999 ms | +| NUnit | 4.4.0 | 676.90 ms | 675.21 ms | 10.367 ms | +| MSTest | 4.0.2 | 659.56 ms | 659.58 ms | 4.624 ms | +| xUnit3 | 3.2.0 | 676.88 ms | 673.98 ms | 10.260 ms | +| **TUnit (AOT)** | 1.1.10 | 48.50 ms | 48.84 ms | 3.553 ms | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI xychart-beta title "ScaleTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 822 - bar [505.85, 684.72, 669.43, 684.21, 44.88] + y-axis "Time (ms)" 0 --> 813 + bar [484.97, 676.9, 659.56, 676.88, 48.5] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-14T00:28:50.467Z* +*Last generated: 2025-11-15T00:27:09.504Z* diff --git a/docs/docs/benchmarks/SetupTeardownTests.md b/docs/docs/benchmarks/SetupTeardownTests.md index 929d854248..b91e232393 100644 --- a/docs/docs/benchmarks/SetupTeardownTests.md +++ b/docs/docs/benchmarks/SetupTeardownTests.md @@ -7,7 +7,7 @@ sidebar_position: 7 # SetupTeardownTests Benchmark :::info Last Updated -This benchmark was automatically generated on **2025-11-14** from the latest CI run. +This benchmark was automatically generated on **2025-11-15** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -16,10 +16,10 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI | Framework | Version | Mean | Median | StdDev | |-----------|---------|------|--------|--------| -| **TUnit** | 1.1.10 | 559.8 ms | 560.2 ms | 3.75 ms | -| NUnit | 4.4.0 | 1,135.0 ms | 1,132.6 ms | 11.31 ms | -| MSTest | 4.0.2 | 1,108.5 ms | 1,107.1 ms | 8.11 ms | -| xUnit3 | 3.2.0 | 1,186.2 ms | 1,186.3 ms | 6.25 ms | +| **TUnit** | 1.1.10 | 540.2 ms | 540.7 ms | 5.84 ms | +| NUnit | 4.4.0 | 1,160.3 ms | 1,156.8 ms | 10.70 ms | +| MSTest | 4.0.2 | 1,133.4 ms | 1,131.4 ms | 5.85 ms | +| xUnit3 | 3.2.0 | 1,219.9 ms | 1,218.4 ms | 19.12 ms | | **TUnit (AOT)** | 1.1.10 | NA | NA | NA | ## 📈 Visual Comparison @@ -58,8 +58,8 @@ This benchmark was automatically generated on **2025-11-14** from the latest CI xychart-beta title "SetupTeardownTests Performance Comparison" x-axis ["TUnit", "NUnit", "MSTest", "xUnit3", "TUnit_AOT"] - y-axis "Time (ms)" 0 --> 1424 - bar [559.8, 1135, 1108.5, 1186.2, 0] + y-axis "Time (ms)" 0 --> 1464 + bar [540.2, 1160.3, 1133.4, 1219.9, 0] ``` ## 🎯 Key Insights @@ -72,4 +72,4 @@ This benchmark compares TUnit's performance against NUnit, MSTest, xUnit3 using View the [benchmarks overview](/docs/benchmarks) for methodology details and environment information. ::: -*Last generated: 2025-11-14T00:28:50.467Z* +*Last generated: 2025-11-15T00:27:09.504Z* diff --git a/docs/docs/benchmarks/index.md b/docs/docs/benchmarks/index.md index 0d6d91c7e0..220c099ad9 100644 --- a/docs/docs/benchmarks/index.md +++ b/docs/docs/benchmarks/index.md @@ -7,7 +7,7 @@ sidebar_position: 1 # Performance Benchmarks :::info Last Updated -These benchmarks were automatically generated on **2025-11-14** from the latest CI run. +These benchmarks were automatically generated on **2025-11-15** from the latest CI run. **Environment:** Ubuntu Latest • .NET SDK 10.0.100 ::: @@ -56,7 +56,7 @@ The benchmarks measure real-world testing patterns: ### Environment - **OS**: Ubuntu Latest (GitHub Actions) -- **Runtime**: .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3 +- **Runtime**: .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4 - **SDK**: .NET SDK 10.0.100 - **Hardware**: GitHub Actions Standard Runner (Ubuntu) - **Tool**: BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat) @@ -80,4 +80,4 @@ These benchmarks run automatically daily via [GitHub Actions](https://github.com Each benchmark runs multiple iterations with statistical analysis to ensure accuracy. Results may vary based on hardware and test characteristics. ::: -*Last generated: 2025-11-14T00:28:50.468Z* +*Last generated: 2025-11-15T00:27:09.505Z* diff --git a/docs/static/benchmarks/AsyncTests.json b/docs/static/benchmarks/AsyncTests.json index a3e04863e0..e24f1a0e7e 100644 --- a/docs/static/benchmarks/AsyncTests.json +++ b/docs/static/benchmarks/AsyncTests.json @@ -1,51 +1,51 @@ { - "timestamp": "2025-11-14T00:28:50.466Z", + "timestamp": "2025-11-15T00:27:09.502Z", "category": "AsyncTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", - "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" + "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4" }, "results": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "565.6 ms", - "Error": "4.72 ms", - "StdDev": "3.94 ms", - "Median": "564.2 ms" + "Mean": "546.4 ms", + "Error": "4.30 ms", + "StdDev": "3.82 ms", + "Median": "546.3 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "681.8 ms", - "Error": "5.30 ms", - "StdDev": "4.42 ms", - "Median": "682.0 ms" + "Mean": "647.1 ms", + "Error": "9.66 ms", + "StdDev": "9.04 ms", + "Median": "642.5 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "654.5 ms", - "Error": "7.43 ms", - "StdDev": "6.20 ms", - "Median": "653.4 ms" + "Mean": "616.6 ms", + "Error": "8.04 ms", + "StdDev": "7.52 ms", + "Median": "617.2 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "734.5 ms", - "Error": "9.42 ms", - "StdDev": "8.35 ms", - "Median": "736.6 ms" + "Mean": "693.2 ms", + "Error": "5.53 ms", + "StdDev": "5.17 ms", + "Median": "692.8 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.10", - "Mean": "124.2 ms", - "Error": "0.31 ms", - "StdDev": "0.29 ms", - "Median": "124.2 ms" + "Mean": "123.7 ms", + "Error": "0.41 ms", + "StdDev": "0.39 ms", + "Median": "123.7 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/BuildTime.json b/docs/static/benchmarks/BuildTime.json index 9c8b3c60c3..078351a707 100644 --- a/docs/static/benchmarks/BuildTime.json +++ b/docs/static/benchmarks/BuildTime.json @@ -1,43 +1,43 @@ { - "timestamp": "2025-11-14T00:28:50.468Z", + "timestamp": "2025-11-15T00:27:09.505Z", "category": "BuildTime", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", - "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" + "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4" }, "results": [ { "Method": "Build_TUnit", "Version": "1.1.10", - "Mean": "2.051 s", - "Error": "0.0306 s", - "StdDev": "0.0286 s", - "Median": "2.047 s" + "Mean": "2.104 s", + "Error": "0.0409 s", + "StdDev": "0.0487 s", + "Median": "2.097 s" }, { "Method": "Build_NUnit", "Version": "4.4.0", - "Mean": "1.637 s", - "Error": "0.0156 s", - "StdDev": "0.0138 s", - "Median": "1.634 s" + "Mean": "1.658 s", + "Error": "0.0277 s", + "StdDev": "0.0272 s", + "Median": "1.652 s" }, { "Method": "Build_MSTest", "Version": "4.0.2", - "Mean": "1.709 s", - "Error": "0.0103 s", - "StdDev": "0.0086 s", - "Median": "1.706 s" + "Mean": "1.751 s", + "Error": "0.0339 s", + "StdDev": "0.0404 s", + "Median": "1.748 s" }, { "Method": "Build_xUnit3", "Version": "3.2.0", - "Mean": "1.618 s", - "Error": "0.0193 s", - "StdDev": "0.0180 s", - "Median": "1.615 s" + "Mean": "1.643 s", + "Error": "0.0230 s", + "StdDev": "0.0204 s", + "Median": "1.644 s" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/DataDrivenTests.json b/docs/static/benchmarks/DataDrivenTests.json index 195c5c1627..0bcbeb8851 100644 --- a/docs/static/benchmarks/DataDrivenTests.json +++ b/docs/static/benchmarks/DataDrivenTests.json @@ -1,51 +1,51 @@ { - "timestamp": "2025-11-14T00:28:50.466Z", + "timestamp": "2025-11-15T00:27:09.503Z", "category": "DataDrivenTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", - "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" + "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4" }, "results": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "486.00 ms", - "Error": "3.113 ms", - "StdDev": "2.911 ms", - "Median": "486.93 ms" + "Mean": "493.28 ms", + "Error": "5.855 ms", + "StdDev": "5.477 ms", + "Median": "491.72 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "587.97 ms", - "Error": "11.440 ms", - "StdDev": "10.141 ms", - "Median": "586.01 ms" + "Mean": "527.71 ms", + "Error": "7.480 ms", + "StdDev": "6.631 ms", + "Median": "528.80 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "606.98 ms", - "Error": "11.382 ms", - "StdDev": "10.647 ms", - "Median": "607.45 ms" + "Mean": "499.80 ms", + "Error": "9.877 ms", + "StdDev": "18.060 ms", + "Median": "496.67 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "599.37 ms", - "Error": "10.657 ms", - "StdDev": "9.447 ms", - "Median": "599.31 ms" + "Mean": "571.43 ms", + "Error": "11.164 ms", + "StdDev": "9.897 ms", + "Median": "570.30 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.10", - "Mean": "23.70 ms", - "Error": "0.153 ms", - "StdDev": "0.136 ms", - "Median": "23.74 ms" + "Mean": "24.09 ms", + "Error": "0.165 ms", + "StdDev": "0.146 ms", + "Median": "24.07 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/MassiveParallelTests.json b/docs/static/benchmarks/MassiveParallelTests.json index 786ff6fee6..3bcf02d672 100644 --- a/docs/static/benchmarks/MassiveParallelTests.json +++ b/docs/static/benchmarks/MassiveParallelTests.json @@ -1,51 +1,51 @@ { - "timestamp": "2025-11-14T00:28:50.466Z", + "timestamp": "2025-11-15T00:27:09.503Z", "category": "MassiveParallelTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", - "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" + "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4" }, "results": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "613.8 ms", - "Error": "5.44 ms", - "StdDev": "4.83 ms", - "Median": "613.2 ms" + "Mean": "605.7 ms", + "Error": "6.97 ms", + "StdDev": "6.52 ms", + "Median": "603.9 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,216.8 ms", - "Error": "10.69 ms", - "StdDev": "9.48 ms", - "Median": "1,214.5 ms" + "Mean": "1,177.6 ms", + "Error": "6.85 ms", + "StdDev": "6.41 ms", + "Median": "1,177.8 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "2,992.2 ms", - "Error": "14.67 ms", - "StdDev": "13.72 ms", - "Median": "2,990.5 ms" + "Mean": "2,951.3 ms", + "Error": "8.08 ms", + "StdDev": "6.75 ms", + "Median": "2,951.9 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "3,088.0 ms", - "Error": "10.93 ms", - "StdDev": "9.69 ms", - "Median": "3,087.1 ms" + "Mean": "3,050.0 ms", + "Error": "7.92 ms", + "StdDev": "7.02 ms", + "Median": "3,050.0 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.10", - "Mean": "131.8 ms", - "Error": "0.51 ms", - "StdDev": "0.45 ms", - "Median": "131.9 ms" + "Mean": "130.9 ms", + "Error": "0.43 ms", + "StdDev": "0.38 ms", + "Median": "130.7 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/MatrixTests.json b/docs/static/benchmarks/MatrixTests.json index 2589e12bd2..6e19609d0e 100644 --- a/docs/static/benchmarks/MatrixTests.json +++ b/docs/static/benchmarks/MatrixTests.json @@ -1,51 +1,51 @@ { - "timestamp": "2025-11-14T00:28:50.467Z", + "timestamp": "2025-11-15T00:27:09.504Z", "category": "MatrixTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", - "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" + "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4" }, "results": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "554.66 ms", - "Error": "4.254 ms", - "StdDev": "3.979 ms", - "Median": "554.27 ms" + "Mean": "563.80 ms", + "Error": "8.024 ms", + "StdDev": "7.113 ms", + "Median": "562.94 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,521.00 ms", - "Error": "9.234 ms", - "StdDev": "8.186 ms", - "Median": "1,519.64 ms" + "Mean": "1,538.27 ms", + "Error": "12.437 ms", + "StdDev": "11.633 ms", + "Median": "1,538.35 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,480.94 ms", - "Error": "10.002 ms", - "StdDev": "8.867 ms", - "Median": "1,479.41 ms" + "Mean": "1,497.90 ms", + "Error": "15.778 ms", + "StdDev": "14.759 ms", + "Median": "1,490.67 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,568.45 ms", - "Error": "7.786 ms", - "StdDev": "6.902 ms", - "Median": "1,568.35 ms" + "Mean": "1,579.28 ms", + "Error": "7.991 ms", + "StdDev": "6.673 ms", + "Median": "1,578.51 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.10", - "Mean": "77.76 ms", - "Error": "0.225 ms", - "StdDev": "0.199 ms", - "Median": "77.77 ms" + "Mean": "78.71 ms", + "Error": "0.450 ms", + "StdDev": "0.421 ms", + "Median": "78.69 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/ScaleTests.json b/docs/static/benchmarks/ScaleTests.json index 07eb91f7ba..a9d04333a3 100644 --- a/docs/static/benchmarks/ScaleTests.json +++ b/docs/static/benchmarks/ScaleTests.json @@ -1,51 +1,51 @@ { - "timestamp": "2025-11-14T00:28:50.467Z", + "timestamp": "2025-11-15T00:27:09.504Z", "category": "ScaleTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", - "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" + "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4" }, "results": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "505.85 ms", - "Error": "2.785 ms", - "StdDev": "2.469 ms", - "Median": "505.28 ms" + "Mean": "484.97 ms", + "Error": "4.275 ms", + "StdDev": "3.999 ms", + "Median": "485.22 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "684.72 ms", - "Error": "13.380 ms", - "StdDev": "16.921 ms", - "Median": "681.86 ms" + "Mean": "676.90 ms", + "Error": "11.083 ms", + "StdDev": "10.367 ms", + "Median": "675.21 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "669.43 ms", - "Error": "13.197 ms", - "StdDev": "13.552 ms", - "Median": "669.54 ms" + "Mean": "659.56 ms", + "Error": "5.537 ms", + "StdDev": "4.624 ms", + "Median": "659.58 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "684.21 ms", - "Error": "13.160 ms", - "StdDev": "15.666 ms", - "Median": "676.60 ms" + "Mean": "676.88 ms", + "Error": "10.968 ms", + "StdDev": "10.260 ms", + "Median": "673.98 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.10", - "Mean": "44.88 ms", - "Error": "1.324 ms", - "StdDev": "3.904 ms", - "Median": "44.70 ms" + "Mean": "48.50 ms", + "Error": "1.211 ms", + "StdDev": "3.553 ms", + "Median": "48.84 ms" } ] } \ No newline at end of file diff --git a/docs/static/benchmarks/SetupTeardownTests.json b/docs/static/benchmarks/SetupTeardownTests.json index 9859581e8a..51c9a4f9cb 100644 --- a/docs/static/benchmarks/SetupTeardownTests.json +++ b/docs/static/benchmarks/SetupTeardownTests.json @@ -1,43 +1,43 @@ { - "timestamp": "2025-11-14T00:28:50.467Z", + "timestamp": "2025-11-15T00:27:09.504Z", "category": "SetupTeardownTests", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", - "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" + "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4" }, "results": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "559.8 ms", - "Error": "4.23 ms", - "StdDev": "3.75 ms", - "Median": "560.2 ms" + "Mean": "540.2 ms", + "Error": "6.24 ms", + "StdDev": "5.84 ms", + "Median": "540.7 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,135.0 ms", - "Error": "12.10 ms", - "StdDev": "11.31 ms", - "Median": "1,132.6 ms" + "Mean": "1,160.3 ms", + "Error": "12.08 ms", + "StdDev": "10.70 ms", + "Median": "1,156.8 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,108.5 ms", - "Error": "8.67 ms", - "StdDev": "8.11 ms", - "Median": "1,107.1 ms" + "Mean": "1,133.4 ms", + "Error": "7.01 ms", + "StdDev": "5.85 ms", + "Median": "1,131.4 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,186.2 ms", - "Error": "7.48 ms", - "StdDev": "6.25 ms", - "Median": "1,186.3 ms" + "Mean": "1,219.9 ms", + "Error": "20.44 ms", + "StdDev": "19.12 ms", + "Median": "1,218.4 ms" }, { "Method": "TUnit_AOT", diff --git a/docs/static/benchmarks/historical.json b/docs/static/benchmarks/historical.json index 6aa3f22f96..736dfcee0b 100644 --- a/docs/static/benchmarks/historical.json +++ b/docs/static/benchmarks/historical.json @@ -38,5 +38,9 @@ { "date": "2025-11-14", "environment": "Ubuntu" + }, + { + "date": "2025-11-15", + "environment": "Ubuntu" } ] \ No newline at end of file diff --git a/docs/static/benchmarks/latest.json b/docs/static/benchmarks/latest.json index c4ce7506d2..a7bd0c8dea 100644 --- a/docs/static/benchmarks/latest.json +++ b/docs/static/benchmarks/latest.json @@ -1,253 +1,253 @@ { - "timestamp": "2025-11-14T00:28:50.468Z", + "timestamp": "2025-11-15T00:27:09.505Z", "environment": { "benchmarkDotNetVersion": "BenchmarkDotNet v0.15.7, Linux Ubuntu 24.04.3 LTS (Noble Numbat)", "sdk": ".NET SDK 10.0.100", - "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v3" + "host": ".NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4" }, "categories": { "AsyncTests": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "565.6 ms", - "Error": "4.72 ms", - "StdDev": "3.94 ms", - "Median": "564.2 ms" + "Mean": "546.4 ms", + "Error": "4.30 ms", + "StdDev": "3.82 ms", + "Median": "546.3 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "681.8 ms", - "Error": "5.30 ms", - "StdDev": "4.42 ms", - "Median": "682.0 ms" + "Mean": "647.1 ms", + "Error": "9.66 ms", + "StdDev": "9.04 ms", + "Median": "642.5 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "654.5 ms", - "Error": "7.43 ms", - "StdDev": "6.20 ms", - "Median": "653.4 ms" + "Mean": "616.6 ms", + "Error": "8.04 ms", + "StdDev": "7.52 ms", + "Median": "617.2 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "734.5 ms", - "Error": "9.42 ms", - "StdDev": "8.35 ms", - "Median": "736.6 ms" + "Mean": "693.2 ms", + "Error": "5.53 ms", + "StdDev": "5.17 ms", + "Median": "692.8 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.10", - "Mean": "124.2 ms", - "Error": "0.31 ms", - "StdDev": "0.29 ms", - "Median": "124.2 ms" + "Mean": "123.7 ms", + "Error": "0.41 ms", + "StdDev": "0.39 ms", + "Median": "123.7 ms" } ], "DataDrivenTests": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "486.00 ms", - "Error": "3.113 ms", - "StdDev": "2.911 ms", - "Median": "486.93 ms" + "Mean": "493.28 ms", + "Error": "5.855 ms", + "StdDev": "5.477 ms", + "Median": "491.72 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "587.97 ms", - "Error": "11.440 ms", - "StdDev": "10.141 ms", - "Median": "586.01 ms" + "Mean": "527.71 ms", + "Error": "7.480 ms", + "StdDev": "6.631 ms", + "Median": "528.80 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "606.98 ms", - "Error": "11.382 ms", - "StdDev": "10.647 ms", - "Median": "607.45 ms" + "Mean": "499.80 ms", + "Error": "9.877 ms", + "StdDev": "18.060 ms", + "Median": "496.67 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "599.37 ms", - "Error": "10.657 ms", - "StdDev": "9.447 ms", - "Median": "599.31 ms" + "Mean": "571.43 ms", + "Error": "11.164 ms", + "StdDev": "9.897 ms", + "Median": "570.30 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.10", - "Mean": "23.70 ms", - "Error": "0.153 ms", - "StdDev": "0.136 ms", - "Median": "23.74 ms" + "Mean": "24.09 ms", + "Error": "0.165 ms", + "StdDev": "0.146 ms", + "Median": "24.07 ms" } ], "MassiveParallelTests": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "613.8 ms", - "Error": "5.44 ms", - "StdDev": "4.83 ms", - "Median": "613.2 ms" + "Mean": "605.7 ms", + "Error": "6.97 ms", + "StdDev": "6.52 ms", + "Median": "603.9 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,216.8 ms", - "Error": "10.69 ms", - "StdDev": "9.48 ms", - "Median": "1,214.5 ms" + "Mean": "1,177.6 ms", + "Error": "6.85 ms", + "StdDev": "6.41 ms", + "Median": "1,177.8 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "2,992.2 ms", - "Error": "14.67 ms", - "StdDev": "13.72 ms", - "Median": "2,990.5 ms" + "Mean": "2,951.3 ms", + "Error": "8.08 ms", + "StdDev": "6.75 ms", + "Median": "2,951.9 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "3,088.0 ms", - "Error": "10.93 ms", - "StdDev": "9.69 ms", - "Median": "3,087.1 ms" + "Mean": "3,050.0 ms", + "Error": "7.92 ms", + "StdDev": "7.02 ms", + "Median": "3,050.0 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.10", - "Mean": "131.8 ms", - "Error": "0.51 ms", - "StdDev": "0.45 ms", - "Median": "131.9 ms" + "Mean": "130.9 ms", + "Error": "0.43 ms", + "StdDev": "0.38 ms", + "Median": "130.7 ms" } ], "MatrixTests": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "554.66 ms", - "Error": "4.254 ms", - "StdDev": "3.979 ms", - "Median": "554.27 ms" + "Mean": "563.80 ms", + "Error": "8.024 ms", + "StdDev": "7.113 ms", + "Median": "562.94 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,521.00 ms", - "Error": "9.234 ms", - "StdDev": "8.186 ms", - "Median": "1,519.64 ms" + "Mean": "1,538.27 ms", + "Error": "12.437 ms", + "StdDev": "11.633 ms", + "Median": "1,538.35 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,480.94 ms", - "Error": "10.002 ms", - "StdDev": "8.867 ms", - "Median": "1,479.41 ms" + "Mean": "1,497.90 ms", + "Error": "15.778 ms", + "StdDev": "14.759 ms", + "Median": "1,490.67 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,568.45 ms", - "Error": "7.786 ms", - "StdDev": "6.902 ms", - "Median": "1,568.35 ms" + "Mean": "1,579.28 ms", + "Error": "7.991 ms", + "StdDev": "6.673 ms", + "Median": "1,578.51 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.10", - "Mean": "77.76 ms", - "Error": "0.225 ms", - "StdDev": "0.199 ms", - "Median": "77.77 ms" + "Mean": "78.71 ms", + "Error": "0.450 ms", + "StdDev": "0.421 ms", + "Median": "78.69 ms" } ], "ScaleTests": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "505.85 ms", - "Error": "2.785 ms", - "StdDev": "2.469 ms", - "Median": "505.28 ms" + "Mean": "484.97 ms", + "Error": "4.275 ms", + "StdDev": "3.999 ms", + "Median": "485.22 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "684.72 ms", - "Error": "13.380 ms", - "StdDev": "16.921 ms", - "Median": "681.86 ms" + "Mean": "676.90 ms", + "Error": "11.083 ms", + "StdDev": "10.367 ms", + "Median": "675.21 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "669.43 ms", - "Error": "13.197 ms", - "StdDev": "13.552 ms", - "Median": "669.54 ms" + "Mean": "659.56 ms", + "Error": "5.537 ms", + "StdDev": "4.624 ms", + "Median": "659.58 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "684.21 ms", - "Error": "13.160 ms", - "StdDev": "15.666 ms", - "Median": "676.60 ms" + "Mean": "676.88 ms", + "Error": "10.968 ms", + "StdDev": "10.260 ms", + "Median": "673.98 ms" }, { "Method": "TUnit_AOT", "Version": "1.1.10", - "Mean": "44.88 ms", - "Error": "1.324 ms", - "StdDev": "3.904 ms", - "Median": "44.70 ms" + "Mean": "48.50 ms", + "Error": "1.211 ms", + "StdDev": "3.553 ms", + "Median": "48.84 ms" } ], "SetupTeardownTests": [ { "Method": "TUnit", "Version": "1.1.10", - "Mean": "559.8 ms", - "Error": "4.23 ms", - "StdDev": "3.75 ms", - "Median": "560.2 ms" + "Mean": "540.2 ms", + "Error": "6.24 ms", + "StdDev": "5.84 ms", + "Median": "540.7 ms" }, { "Method": "NUnit", "Version": "4.4.0", - "Mean": "1,135.0 ms", - "Error": "12.10 ms", - "StdDev": "11.31 ms", - "Median": "1,132.6 ms" + "Mean": "1,160.3 ms", + "Error": "12.08 ms", + "StdDev": "10.70 ms", + "Median": "1,156.8 ms" }, { "Method": "MSTest", "Version": "4.0.2", - "Mean": "1,108.5 ms", - "Error": "8.67 ms", - "StdDev": "8.11 ms", - "Median": "1,107.1 ms" + "Mean": "1,133.4 ms", + "Error": "7.01 ms", + "StdDev": "5.85 ms", + "Median": "1,131.4 ms" }, { "Method": "xUnit3", "Version": "3.2.0", - "Mean": "1,186.2 ms", - "Error": "7.48 ms", - "StdDev": "6.25 ms", - "Median": "1,186.3 ms" + "Mean": "1,219.9 ms", + "Error": "20.44 ms", + "StdDev": "19.12 ms", + "Median": "1,218.4 ms" }, { "Method": "TUnit_AOT", @@ -264,34 +264,34 @@ { "Method": "Build_TUnit", "Version": "1.1.10", - "Mean": "2.051 s", - "Error": "0.0306 s", - "StdDev": "0.0286 s", - "Median": "2.047 s" + "Mean": "2.104 s", + "Error": "0.0409 s", + "StdDev": "0.0487 s", + "Median": "2.097 s" }, { "Method": "Build_NUnit", "Version": "4.4.0", - "Mean": "1.637 s", - "Error": "0.0156 s", - "StdDev": "0.0138 s", - "Median": "1.634 s" + "Mean": "1.658 s", + "Error": "0.0277 s", + "StdDev": "0.0272 s", + "Median": "1.652 s" }, { "Method": "Build_MSTest", "Version": "4.0.2", - "Mean": "1.709 s", - "Error": "0.0103 s", - "StdDev": "0.0086 s", - "Median": "1.706 s" + "Mean": "1.751 s", + "Error": "0.0339 s", + "StdDev": "0.0404 s", + "Median": "1.748 s" }, { "Method": "Build_xUnit3", "Version": "3.2.0", - "Mean": "1.618 s", - "Error": "0.0193 s", - "StdDev": "0.0180 s", - "Median": "1.615 s" + "Mean": "1.643 s", + "Error": "0.0230 s", + "StdDev": "0.0204 s", + "Median": "1.644 s" } ] }, @@ -299,6 +299,6 @@ "runtimeCategories": 6, "buildCategories": 1, "totalBenchmarks": 7, - "lastUpdated": "2025-11-14T00:28:50.465Z" + "lastUpdated": "2025-11-15T00:27:09.502Z" } } \ No newline at end of file diff --git a/docs/static/benchmarks/summary.json b/docs/static/benchmarks/summary.json index 56b733f715..435c36799e 100644 --- a/docs/static/benchmarks/summary.json +++ b/docs/static/benchmarks/summary.json @@ -10,6 +10,6 @@ "build": [ "BuildTime" ], - "timestamp": "2025-11-14", + "timestamp": "2025-11-15", "environment": "Ubuntu Latest • .NET SDK 10.0.100" } \ No newline at end of file From c097f543d4d494f08a12ce385debde4193237d44 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 15 Nov 2025 00:34:48 +0000 Subject: [PATCH 16/17] feat(tests): add timeout cancellation token tests and enhance test context (#3838) * feat(tests): add timeout cancellation token tests and enhance test context * feat(tests): add tests for cancellation token behavior in timeout scenarios --- ...utCancellationTokenTests.Test.verified.txt | 270 ++++++++++++++++++ TUnit.Engine/Building/TestBuilder.cs | 3 +- TUnit.Engine/TestExecutor.cs | 3 + .../TimeoutCancellationTokenTests.cs | 52 ++++ 4 files changed, 327 insertions(+), 1 deletion(-) diff --git a/TUnit.Core.SourceGenerator.Tests/TimeoutCancellationTokenTests.Test.verified.txt b/TUnit.Core.SourceGenerator.Tests/TimeoutCancellationTokenTests.Test.verified.txt index 5c46854523..85223a7c65 100644 --- a/TUnit.Core.SourceGenerator.Tests/TimeoutCancellationTokenTests.Test.verified.txt +++ b/TUnit.Core.SourceGenerator.Tests/TimeoutCancellationTokenTests.Test.verified.txt @@ -877,3 +877,273 @@ internal static class TUnit_TestProject_TimeoutCancellationTokenTests_MatrixTest global::TUnit.Core.SourceRegistrar.Register(typeof(global::TUnit.TestProject.TimeoutCancellationTokenTests), new TUnit_TestProject_TimeoutCancellationTokenTests_MatrixTest__int_CancellationToken_TestSource()); } } + + +// ===== FILE SEPARATOR ===== + +// +#pragma warning disable + +#nullable enable +namespace TUnit.Generated; +internal sealed class TUnit_TestProject_TimeoutDoesNotFireTests_QuickTestDoesNotTimeout__CancellationToken_TestSource : global::TUnit.Core.Interfaces.SourceGenerator.ITestSource +{ + public async global::System.Collections.Generic.IAsyncEnumerable GetTestsAsync(string testSessionId, [global::System.Runtime.CompilerServices.EnumeratorCancellation] global::System.Threading.CancellationToken cancellationToken = default) + { + var metadata = new global::TUnit.Core.TestMetadata + { + TestName = "QuickTestDoesNotTimeout", + TestClassType = typeof(global::TUnit.TestProject.TimeoutDoesNotFireTests), + TestMethodName = "QuickTestDoesNotTimeout", + Dependencies = global::System.Array.Empty(), + AttributeFactory = static () => + [ + new global::TUnit.Core.TestAttribute(), + new global::TUnit.Core.MethodDataSourceAttribute("DataSource"), + new global::TUnit.Core.TimeoutAttribute(30_000), + new global::TUnit.TestProject.Attributes.EngineTest(global::TUnit.TestProject.Attributes.ExpectedResult.Pass), + new global::TUnit.Core.CategoryAttribute("Timeout Cancellation Token Tests") + ], + DataSources = global::System.Array.Empty(), + ClassDataSources = new global::TUnit.Core.IDataSourceAttribute[] + { + new global::TUnit.Core.MethodDataSourceAttribute("DataSource") + { + Factory = (dataGeneratorMetadata) => + { + async global::System.Collections.Generic.IAsyncEnumerable>> Factory() + { + var result = global::TUnit.TestProject.TimeoutDoesNotFireTests.DataSource(); + if (result is global::System.Collections.IEnumerable enumerable && !(result is string)) + { + foreach (var item in enumerable) + { + yield return () => global::System.Threading.Tasks.Task.FromResult(global::TUnit.Core.Helpers.DataSourceHelpers.ToObjectArray(item)); + } + } + else + { + yield return () => global::System.Threading.Tasks.Task.FromResult(global::TUnit.Core.Helpers.DataSourceHelpers.ToObjectArray(result)); + } + } + return Factory(); + } + }, + }, + PropertyDataSources = global::System.Array.Empty(), + PropertyInjections = global::System.Array.Empty(), + InheritanceDepth = 0, + FilePath = @"", + LineNumber = 86, + MethodMetadata = new global::TUnit.Core.MethodMetadata + { + Type = typeof(global::TUnit.TestProject.TimeoutDoesNotFireTests), + TypeInfo = new global::TUnit.Core.ConcreteType(typeof(global::TUnit.TestProject.TimeoutDoesNotFireTests)), + Name = "QuickTestDoesNotTimeout", + GenericTypeCount = 0, + ReturnType = typeof(global::System.Threading.Tasks.Task), + ReturnTypeInfo = new global::TUnit.Core.ConcreteType(typeof(global::System.Threading.Tasks.Task)), + Parameters = new global::TUnit.Core.ParameterMetadata[] + { + new global::TUnit.Core.ParameterMetadata(typeof(global::System.Threading.CancellationToken)) + { + Name = "cancellationToken", + TypeInfo = new global::TUnit.Core.ConcreteType(typeof(global::System.Threading.CancellationToken)), + IsNullable = false, + ReflectionInfo = typeof(global::TUnit.TestProject.TimeoutDoesNotFireTests).GetMethod("QuickTestDoesNotTimeout", global::System.Reflection.BindingFlags.Public | global::System.Reflection.BindingFlags.NonPublic | global::System.Reflection.BindingFlags.Instance, null, new global::System.Type[] { typeof(global::System.Threading.CancellationToken) }, null)!.GetParameters()[0] + } + }, + Class = global::TUnit.Core.ClassMetadata.GetOrAdd("TestsBase`1:global::TUnit.TestProject.TimeoutDoesNotFireTests", static () => + { + var classMetadata = new global::TUnit.Core.ClassMetadata + { + Type = typeof(global::TUnit.TestProject.TimeoutDoesNotFireTests), + TypeInfo = new global::TUnit.Core.ConcreteType(typeof(global::TUnit.TestProject.TimeoutDoesNotFireTests)), + Name = "TimeoutDoesNotFireTests", + Namespace = "TUnit.TestProject", + Assembly = global::TUnit.Core.AssemblyMetadata.GetOrAdd("TestsBase`1", static () => new global::TUnit.Core.AssemblyMetadata { Name = "TestsBase`1" }), + Parameters = new global::TUnit.Core.ParameterMetadata[] + { + new global::TUnit.Core.ParameterMetadata(typeof(int)) + { + Name = "value", + TypeInfo = new global::TUnit.Core.ConcreteType(typeof(int)), + IsNullable = false, + ReflectionInfo = typeof(global::TUnit.TestProject.TimeoutDoesNotFireTests).GetConstructor(new global::System.Type[] { typeof(int) })!.GetParameters()[0] + } + }, + Properties = global::System.Array.Empty(), + Parent = null + }; + foreach (var prop in classMetadata.Properties) + { + prop.ClassMetadata = classMetadata; + prop.ContainingTypeMetadata = classMetadata; + } + return classMetadata; + }) + }, + InstanceFactory = (typeArgs, args) => + { + return new global::TUnit.TestProject.TimeoutDoesNotFireTests(TUnit.Core.Helpers.CastHelper.Cast(args[0])); + }, + InvokeTypedTest = static (instance, args, cancellationToken) => + { + try + { + return new global::System.Threading.Tasks.ValueTask(instance.QuickTestDoesNotTimeout(cancellationToken)); + } + catch (global::System.Exception ex) + { + return new global::System.Threading.Tasks.ValueTask(global::System.Threading.Tasks.Task.FromException(ex)); + } + }, + }; + metadata.UseRuntimeDataGeneration(testSessionId); + yield return metadata; + yield break; + } +} +internal static class TUnit_TestProject_TimeoutDoesNotFireTests_QuickTestDoesNotTimeout__CancellationToken_ModuleInitializer +{ + [global::System.Runtime.CompilerServices.ModuleInitializer] + public static void Initialize() + { + global::TUnit.Core.SourceRegistrar.Register(typeof(global::TUnit.TestProject.TimeoutDoesNotFireTests), new TUnit_TestProject_TimeoutDoesNotFireTests_QuickTestDoesNotTimeout__CancellationToken_TestSource()); + } +} + + +// ===== FILE SEPARATOR ===== + +// +#pragma warning disable + +#nullable enable +namespace TUnit.Generated; +internal sealed class TUnit_TestProject_CancellationTokenTriggeredTests_CancellationTokenIsTriggered__CancellationToken_TestSource : global::TUnit.Core.Interfaces.SourceGenerator.ITestSource +{ + public async global::System.Collections.Generic.IAsyncEnumerable GetTestsAsync(string testSessionId, [global::System.Runtime.CompilerServices.EnumeratorCancellation] global::System.Threading.CancellationToken cancellationToken = default) + { + var metadata = new global::TUnit.Core.TestMetadata + { + TestName = "CancellationTokenIsTriggered", + TestClassType = typeof(global::TUnit.TestProject.CancellationTokenTriggeredTests), + TestMethodName = "CancellationTokenIsTriggered", + Dependencies = global::System.Array.Empty(), + AttributeFactory = static () => + [ + new global::TUnit.Core.TestAttribute(), + new global::TUnit.Core.MethodDataSourceAttribute("DataSource"), + new global::TUnit.Core.TimeoutAttribute(5_000), + new global::TUnit.TestProject.Attributes.EngineTest(global::TUnit.TestProject.Attributes.ExpectedResult.Failure), + new global::TUnit.Core.CategoryAttribute("Timeout Cancellation Token Tests") + ], + DataSources = global::System.Array.Empty(), + ClassDataSources = new global::TUnit.Core.IDataSourceAttribute[] + { + new global::TUnit.Core.MethodDataSourceAttribute("DataSource") + { + Factory = (dataGeneratorMetadata) => + { + async global::System.Collections.Generic.IAsyncEnumerable>> Factory() + { + var result = global::TUnit.TestProject.CancellationTokenTriggeredTests.DataSource(); + if (result is global::System.Collections.IEnumerable enumerable && !(result is string)) + { + foreach (var item in enumerable) + { + yield return () => global::System.Threading.Tasks.Task.FromResult(global::TUnit.Core.Helpers.DataSourceHelpers.ToObjectArray(item)); + } + } + else + { + yield return () => global::System.Threading.Tasks.Task.FromResult(global::TUnit.Core.Helpers.DataSourceHelpers.ToObjectArray(result)); + } + } + return Factory(); + } + }, + }, + PropertyDataSources = global::System.Array.Empty(), + PropertyInjections = global::System.Array.Empty(), + InheritanceDepth = 0, + FilePath = @"", + LineNumber = 106, + MethodMetadata = new global::TUnit.Core.MethodMetadata + { + Type = typeof(global::TUnit.TestProject.CancellationTokenTriggeredTests), + TypeInfo = new global::TUnit.Core.ConcreteType(typeof(global::TUnit.TestProject.CancellationTokenTriggeredTests)), + Name = "CancellationTokenIsTriggered", + GenericTypeCount = 0, + ReturnType = typeof(global::System.Threading.Tasks.Task), + ReturnTypeInfo = new global::TUnit.Core.ConcreteType(typeof(global::System.Threading.Tasks.Task)), + Parameters = new global::TUnit.Core.ParameterMetadata[] + { + new global::TUnit.Core.ParameterMetadata(typeof(global::System.Threading.CancellationToken)) + { + Name = "cancellationToken", + TypeInfo = new global::TUnit.Core.ConcreteType(typeof(global::System.Threading.CancellationToken)), + IsNullable = false, + ReflectionInfo = typeof(global::TUnit.TestProject.CancellationTokenTriggeredTests).GetMethod("CancellationTokenIsTriggered", global::System.Reflection.BindingFlags.Public | global::System.Reflection.BindingFlags.NonPublic | global::System.Reflection.BindingFlags.Instance, null, new global::System.Type[] { typeof(global::System.Threading.CancellationToken) }, null)!.GetParameters()[0] + } + }, + Class = global::TUnit.Core.ClassMetadata.GetOrAdd("TestsBase`1:global::TUnit.TestProject.CancellationTokenTriggeredTests", static () => + { + var classMetadata = new global::TUnit.Core.ClassMetadata + { + Type = typeof(global::TUnit.TestProject.CancellationTokenTriggeredTests), + TypeInfo = new global::TUnit.Core.ConcreteType(typeof(global::TUnit.TestProject.CancellationTokenTriggeredTests)), + Name = "CancellationTokenTriggeredTests", + Namespace = "TUnit.TestProject", + Assembly = global::TUnit.Core.AssemblyMetadata.GetOrAdd("TestsBase`1", static () => new global::TUnit.Core.AssemblyMetadata { Name = "TestsBase`1" }), + Parameters = new global::TUnit.Core.ParameterMetadata[] + { + new global::TUnit.Core.ParameterMetadata(typeof(int)) + { + Name = "value", + TypeInfo = new global::TUnit.Core.ConcreteType(typeof(int)), + IsNullable = false, + ReflectionInfo = typeof(global::TUnit.TestProject.CancellationTokenTriggeredTests).GetConstructor(new global::System.Type[] { typeof(int) })!.GetParameters()[0] + } + }, + Properties = global::System.Array.Empty(), + Parent = null + }; + foreach (var prop in classMetadata.Properties) + { + prop.ClassMetadata = classMetadata; + prop.ContainingTypeMetadata = classMetadata; + } + return classMetadata; + }) + }, + InstanceFactory = (typeArgs, args) => + { + return new global::TUnit.TestProject.CancellationTokenTriggeredTests(TUnit.Core.Helpers.CastHelper.Cast(args[0])); + }, + InvokeTypedTest = static (instance, args, cancellationToken) => + { + try + { + return new global::System.Threading.Tasks.ValueTask(instance.CancellationTokenIsTriggered(cancellationToken)); + } + catch (global::System.Exception ex) + { + return new global::System.Threading.Tasks.ValueTask(global::System.Threading.Tasks.Task.FromException(ex)); + } + }, + }; + metadata.UseRuntimeDataGeneration(testSessionId); + yield return metadata; + yield break; + } +} +internal static class TUnit_TestProject_CancellationTokenTriggeredTests_CancellationTokenIsTriggered__CancellationToken_ModuleInitializer +{ + [global::System.Runtime.CompilerServices.ModuleInitializer] + public static void Initialize() + { + global::TUnit.Core.SourceRegistrar.Register(typeof(global::TUnit.TestProject.CancellationTokenTriggeredTests), new TUnit_TestProject_CancellationTokenTriggeredTests_CancellationTokenIsTriggered__CancellationToken_TestSource()); + } +} diff --git a/TUnit.Engine/Building/TestBuilder.cs b/TUnit.Engine/Building/TestBuilder.cs index c6c3cb787a..fe88863cc4 100644 --- a/TUnit.Engine/Building/TestBuilder.cs +++ b/TUnit.Engine/Building/TestBuilder.cs @@ -284,7 +284,8 @@ public async Task> BuildTestsFromMetadataAsy TestMetadata = metadata.MethodMetadata, Events = new TestContextEvents(), StateBag = new ConcurrentDictionary(), - DataSourceAttribute = methodDataSource + DataSourceAttribute = methodDataSource, + InitializedAttributes = testBuilderContext.InitializedAttributes // Preserve attributes from parent context }; classData = DataUnwrapper.Unwrap(await classDataFactory() ?? []); diff --git a/TUnit.Engine/TestExecutor.cs b/TUnit.Engine/TestExecutor.cs index bc1ab31272..dee49a9d75 100644 --- a/TUnit.Engine/TestExecutor.cs +++ b/TUnit.Engine/TestExecutor.cs @@ -160,6 +160,9 @@ private static async ValueTask ExecuteTestAsync(AbstractExecutableTest executabl // Set the test start time when we actually begin executing the test executableTest.Context.TestStart = DateTimeOffset.UtcNow; + // Set the cancellation token on the context so source-generated tests can access it + executableTest.Context.CancellationToken = cancellationToken; + if (executableTest.Context.InternalDiscoveredTest?.TestExecutor is { } testExecutor) { await testExecutor.ExecuteTest(executableTest.Context, diff --git a/TUnit.TestProject/TimeoutCancellationTokenTests.cs b/TUnit.TestProject/TimeoutCancellationTokenTests.cs index 3ed528ca58..d98717f7b8 100644 --- a/TUnit.TestProject/TimeoutCancellationTokenTests.cs +++ b/TUnit.TestProject/TimeoutCancellationTokenTests.cs @@ -75,3 +75,55 @@ public static IEnumerable DataSource() public class FiveSecondTimeout() : TimeoutAttribute(5_000); } + +// Positive test: Timeout does NOT fire for quick tests with data sources +[MethodDataSource(nameof(DataSource))] +[Timeout(30_000)] // Long timeout (30 seconds) +[EngineTest(ExpectedResult.Pass)] +[Category("Timeout Cancellation Token Tests")] +public class TimeoutDoesNotFireTests(int value) +{ + [Test] + public async Task QuickTestDoesNotTimeout(CancellationToken cancellationToken) + { + await Assert.That(value).IsEqualTo(1); + await Task.Delay(TimeSpan.FromMilliseconds(100), cancellationToken); // Short delay + } + + public static IEnumerable DataSource() + { + yield return 1; + } +} + +// Test to verify cancellation token is actually triggered when timeout fires +[MethodDataSource(nameof(DataSource))] +[Timeout(5_000)] +[EngineTest(ExpectedResult.Failure)] +[Category("Timeout Cancellation Token Tests")] +public class CancellationTokenTriggeredTests(int value) +{ + [Test] + public async Task CancellationTokenIsTriggered(CancellationToken cancellationToken) + { + var fired = false; + cancellationToken.Register(() => fired = true); + + try + { + await Task.Delay(TimeSpan.FromMinutes(1), cancellationToken); + } + catch (OperationCanceledException) + { + // Expected - timeout should trigger cancellation + } + + // Verify token was cancelled + await Assert.That(fired).IsTrue(); + } + + public static IEnumerable DataSource() + { + yield return 1; + } +} From b4f9f6f00bf5c06292ca7a9714ce72a2b51d8443 Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sat, 15 Nov 2025 01:06:22 +0000 Subject: [PATCH 17/17] Optimize GetOrAdd method in ThreadSafeDictionary for improved concurrency handling (#3845) --- TUnit.Core/Data/ThreadSafeDictionary.cs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/TUnit.Core/Data/ThreadSafeDictionary.cs b/TUnit.Core/Data/ThreadSafeDictionary.cs index 6744f5f638..c9e5665c48 100644 --- a/TUnit.Core/Data/ThreadSafeDictionary.cs +++ b/TUnit.Core/Data/ThreadSafeDictionary.cs @@ -69,12 +69,30 @@ public class ThreadSafeDictionary /// This method is thread-safe. If multiple threads call this method simultaneously with the same key, /// the factory function will be executed only once, and all threads will receive the same instance. + /// This implementation uses a two-phase approach: TryGetValue for the fast path (when key exists), + /// and GetOrAdd with a pre-created Lazy for the slow path (new key). This prevents the factory + /// from being invoked multiple times during concurrent access. /// public TValue GetOrAdd(TKey key, Func func) { - var lazy = _innerDictionary.GetOrAdd(key, - k => new Lazy(() => func(k), LazyThreadSafetyMode.ExecutionAndPublication)); - return lazy.Value; + // Fast path: Check if key already exists (lock-free read) + if (_innerDictionary.TryGetValue(key, out var existingLazy)) + { + return existingLazy.Value; + } + + // Slow path: Key not found, need to create + // Create Lazy instance OUTSIDE of GetOrAdd to prevent factory from running during race + var newLazy = new Lazy(() => func(key), LazyThreadSafetyMode.ExecutionAndPublication); + + // Use GetOrAdd with VALUE (not factory) - atomic operation that either: + // 1. Adds our newLazy if key still doesn't exist + // 2. Returns existing Lazy if another thread just added one + var winningLazy = _innerDictionary.GetOrAdd(key, newLazy); + + // CRITICAL: Always return value from the Lazy that's actually in the dictionary + // This ensures only ONE factory execution even if multiple Lazy instances were created + return winningLazy.Value; } ///