Skip to content

feat: support MSTest v4#814

Merged
vbreuss merged 3 commits into
mainfrom
topic/support-mstest4
Oct 18, 2025
Merged

feat: support MSTest v4#814
vbreuss merged 3 commits into
mainfrom
topic/support-mstest4

Conversation

@vbreuss
Copy link
Copy Markdown
Member

@vbreuss vbreuss commented Oct 18, 2025

Adds first-class support for MSTest v4 while keeping MSTest v3 compatibility.

Key changes:

  • Splits the MSTest adapter into distinct MSTest3 and MSTest4 adapters with assembly-based detection.
  • Introduces dedicated test projects/namespaces for MSTest3 and MSTest4 and updates central package versions to MSTest v4.
  • Updates solution and generator debug profile to include the new MSTest4 tests.

@vbreuss vbreuss self-assigned this Oct 18, 2025
Copilot AI review requested due to automatic review settings October 18, 2025 13:43
@vbreuss vbreuss added the enhancement New feature or request label Oct 18, 2025
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Adds first-class support for MSTest v4 while keeping MSTest v3 compatibility.

  • Splits the MSTest adapter into distinct MSTest3 and MSTest4 adapters with assembly-based detection.
  • Introduces dedicated test projects/namespaces for MSTest3 and MSTest4 and updates central package versions to MSTest v4.
  • Updates solution and generator debug profile to include the new MSTest4 tests.

Reviewed Changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
aweXpect.sln Renames the MSTest test project to MSTest3, adds a new MSTest4 test project, and wires solution configs.
Tests/Frameworks/aweXpect.Frameworks.MsTest4.Tests/MsTest4FrameworkTests.cs Adds tests validating aweXpect’s fail/skip/inconclusive mapping against MSTest v4 exceptions.
Tests/Frameworks/aweXpect.Frameworks.MsTest3.Tests/aweXpect.Frameworks.MsTest3.Tests.csproj Pins MSTest packages to v3 via VersionOverride ranges to avoid pulling v4.
Tests/Frameworks/aweXpect.Frameworks.MsTest3.Tests/MsTest3FrameworkTests.cs Adjusts namespace to MsTest3 to match the new project identity.
Source/aweXpect.Frameworks/Properties/launchSettings.json Points generator debug profile to the new MSTest4 test project.
Source/aweXpect.Frameworks/FrameworkGenerator.cs Adds separate MsTest3/MsTest4 adapters and updates assembly detection to generate the right adapter(s).
Directory.Packages.props Bumps central MSTest packages to v4.0.1 to enable v4 usage by default.

Comment thread Source/aweXpect.Frameworks/Properties/launchSettings.json
Comment thread Source/aweXpect.Frameworks/FrameworkGenerator.cs Outdated
Copilot AI review requested due to automatic review settings October 18, 2025 13:48
@vbreuss vbreuss force-pushed the topic/support-mstest4 branch from 2fb91e5 to 2a0462c Compare October 18, 2025 13:50
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 8 out of 9 changed files in this pull request and generated 1 comment.

Comment thread Source/aweXpect.Frameworks/FrameworkGenerator.cs
@vbreuss vbreuss force-pushed the topic/support-mstest4 branch from 2a0462c to a8a5c9f Compare October 18, 2025 13:50
@vbreuss vbreuss enabled auto-merge (squash) October 18, 2025 13:52
@sonarqubecloud
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown
Contributor

Test Results

    14 files   - 24      14 suites   - 24   4m 5s ⏱️ +14s
17 959 tests  - 22  17 957 ✅  - 22  2 💤 ±0  0 ❌ ±0 
50 505 runs   - 72  50 503 ✅  - 72  2 💤 ±0  0 ❌ ±0 

Results for commit a8a5c9f. ± Comparison against base commit 8d0e2bc.

This pull request removes 1582 and adds 1560 tests. Note that renamed tests count towards both.
aweXpect.Core.Tests.Core.Exceptions.FailExceptionTests ‑ Message_ShouldBeSet(message: "message5d8f462e-2d8a-4931-9409-514459085f32")
aweXpect.Core.Tests.Core.Exceptions.FailExceptionTests ‑ Message_ShouldBeSet(message: "messagebe68c837-29c3-4983-aefd-7a5f2768f620")
aweXpect.Core.Tests.Core.Exceptions.FailExceptionTests ‑ Message_ShouldBeSet(message: "messagef64b3a38-3ead-4d94-84d8-461a85f80a0e")
aweXpect.Core.Tests.Core.Exceptions.SkipExceptionTests ‑ Message_ShouldBeSet(message: "message355e3d29-159b-4e2d-8b4d-3e72184a1163")
aweXpect.Core.Tests.Core.Exceptions.SkipExceptionTests ‑ Message_ShouldBeSet(message: "message387b9cf5-22ea-471b-a216-f334d47b7198")
aweXpect.Core.Tests.Core.Exceptions.SkipExceptionTests ‑ Message_ShouldBeSet(message: "message94275740-ad5d-433c-ac10-71d3b27858eb")
aweXpect.Core.Tests.FailTests ‑ Test_ShouldThrowException(reason: "reason1366c8fe-0607-4f11-b1cc-32c8f11508ea")
aweXpect.Core.Tests.FailTests ‑ Test_ShouldThrowException(reason: "reason43165fd5-6fb9-4a2d-9d09-5ad6b0710d66")
aweXpect.Core.Tests.FailTests ‑ Test_ShouldThrowException(reason: "reasonc6ec5819-2b2d-4a22-b36b-4e9d34c052c6")
aweXpect.Core.Tests.FailTests ‑ Unless_ShouldThrowException(condition: False, reason: "reason19ae554e-2421-4f00-a676-2c36147370a7")
…
aweXpect.Core.Tests.Core.Exceptions.FailExceptionTests ‑ Message_ShouldBeSet(message: "message16c21091-641d-4efa-bdb4-e270bea42fef")
aweXpect.Core.Tests.Core.Exceptions.FailExceptionTests ‑ Message_ShouldBeSet(message: "messageb0d45a6a-6011-4f3c-9612-f4d1a0818f80")
aweXpect.Core.Tests.Core.Exceptions.FailExceptionTests ‑ Message_ShouldBeSet(message: "messagef0dfd44c-51f1-4343-9d86-f9bb47a2651a")
aweXpect.Core.Tests.Core.Exceptions.SkipExceptionTests ‑ Message_ShouldBeSet(message: "message2a5b5b1d-f8f3-49a0-bc3f-0bf88668dfb3")
aweXpect.Core.Tests.Core.Exceptions.SkipExceptionTests ‑ Message_ShouldBeSet(message: "message72788638-e560-4660-b37f-79dddbc307f3")
aweXpect.Core.Tests.Core.Exceptions.SkipExceptionTests ‑ Message_ShouldBeSet(message: "messagea128ce68-5a1a-4781-8d92-597f70890cca")
aweXpect.Core.Tests.FailTests ‑ Test_ShouldThrowException(reason: "reason2e5f510f-c45e-433c-a876-a9f70c4166d6")
aweXpect.Core.Tests.FailTests ‑ Test_ShouldThrowException(reason: "reasone3e0c24a-9f14-45a7-8c4b-cd302e402bd2")
aweXpect.Core.Tests.FailTests ‑ Test_ShouldThrowException(reason: "reasonf48f505d-640f-4563-b0b8-56d1581235ba")
aweXpect.Core.Tests.FailTests ‑ Unless_ShouldThrowException(condition: False, reason: "reason2f9bd2d8-bb3b-4897-a3a8-6aa6f9def552")
…

@vbreuss vbreuss merged commit f62cf1d into main Oct 18, 2025
14 checks passed
@vbreuss vbreuss deleted the topic/support-mstest4 branch October 18, 2025 14:01
@github-actions
Copy link
Copy Markdown
Contributor

🚀 Benchmark Results

Details

BenchmarkDotNet v0.14.0, Ubuntu 24.04.3 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 8.0.415
[Host] : .NET 8.0.21 (8.0.2125.47513), X64 RyuJIT AVX2

Job=InProcess Toolchain=InProcessEmitToolchain IterationCount=15
LaunchCount=1 WarmupCount=10

Method Mean Error StdDev Gen0 Gen1 Allocated
Bool_aweXpect 276.8 ns 4.67 ns 4.37 ns 0.0424 - 712 B
Bool_FluentAssertions 255.0 ns 7.49 ns 7.01 ns 0.0567 - 952 B
Bool_TUnit 213.7 ns 4.59 ns 4.30 ns 0.0396 - 664 B
Equivalency_aweXpect 320,451.3 ns 705.90 ns 660.30 ns 20.0195 0.9766 335556 B
Equivalency_FluentAssertions 2,313,414.9 ns 11,811.01 ns 10,470.15 ns 273.4375 46.8750 4584416 B
Equivalency_TUnit 308,733.6 ns 1,482.29 ns 1,386.53 ns 13.1836 0.4883 224760 B
Int_GreaterThan_aweXpect 276.3 ns 5.14 ns 4.81 ns 0.0486 - 816 B
Int_GreaterThan_FluentAssertions 271.6 ns 5.15 ns 4.82 ns 0.0730 - 1224 B
Int_GreaterThan_TUnit 241.3 ns 5.09 ns 4.76 ns 0.0486 - 816 B
ItemsCount_AtLeast_aweXpect 535.0 ns 7.14 ns 6.68 ns 0.0868 - 1464 B
ItemsCount_AtLeast_FluentAssertions 537.4 ns 11.10 ns 10.38 ns 0.1192 - 2008 B
ItemsCount_AtLeast_TUnit 16,936.5 ns 145.68 ns 136.27 ns 1.4954 - 25432 B
String_aweXpect 530.8 ns 2.07 ns 1.93 ns 0.0734 - 1232 B
String_FluentAssertions 536.0 ns 8.60 ns 8.04 ns 0.1287 - 2168 B
String_TUnit 278.9 ns 4.19 ns 3.92 ns 0.0496 - 832 B
StringArray_aweXpect 1,983.2 ns 10.74 ns 10.05 ns 0.1717 - 2888 B
StringArray_FluentAssertions 1,451.3 ns 22.23 ns 20.80 ns 0.2480 - 4152 B
StringArray_TUnit 733.4 ns 9.39 ns 8.78 ns 0.0820 - 1376 B
StringArrayInAnyOrder_aweXpect 2,557.7 ns 8.25 ns 7.72 ns 0.1831 - 3080 B
StringArrayInAnyOrder_FluentAssertions 129,305.6 ns 536.45 ns 501.80 ns 3.6621 - 61719 B
StringArrayInAnyOrder_TUnit 791.7 ns 4.64 ns 4.34 ns 0.0858 - 1440 B

@github-actions
Copy link
Copy Markdown
Contributor

👽 Mutation Results

Mutation testing badge

aweXpect

Details
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Total Detected Total Undetected Total Mutants

The final mutation score is NaN%

Coverage Thresholds: high:80 low:60 break:0

aweXpect.Core

Details
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Total Detected Total Undetected Total Mutants

The final mutation score is NaN%

Coverage Thresholds: high:80 low:60 break:0

github-actions Bot added a commit that referenced this pull request Oct 18, 2025
github-actions Bot added a commit that referenced this pull request Oct 18, 2025
@github-actions
Copy link
Copy Markdown
Contributor

This is addressed in release v2.27.0.

vbreuss pushed a commit to Testably/aweXpect.Reflection that referenced this pull request May 6, 2026
Updated [aweXpect](https://github.com/aweXpect/aweXpect) from 2.26.0 to 2.31.0.

<details>
<summary>Release notes</summary>

_Sourced from [aweXpect's releases](https://github.com/aweXpect/aweXpect/releases)._

## 2.31.0

## What's Changed
* chore: Bump the xunit group with 2 updates by @​dependabot[bot] in Testably/aweXpect#883
* chore: Bump apexskier/github-release-commenter from 1.3.6 to 1.4.1 by @​dependabot[bot] in Testably/aweXpect#884
* chore: Bump SharpCompress from 0.42.1 to 0.44.3 by @​dependabot[bot] in Testably/aweXpect#886
* docs: support nested directories in extensions by @​vbreuss in Testably/aweXpect#887
* chore: Bump the tunit group with 2 updates by @​dependabot[bot] in Testably/aweXpect#888
* chore: Bump SharpCompress from 0.44.3 to 0.44.5 by @​dependabot[bot] in Testably/aweXpect#889
* chore: Bump actions/upload-artifact from 6 to 7 by @​dependabot[bot] in Testably/aweXpect#898
* chore: Bump actions/download-artifact from 7 to 8 by @​dependabot[bot] in Testably/aweXpect#899
* chore: Bump the mstest group with 2 updates by @​dependabot[bot] in Testably/aweXpect#890
* chore: Bump the nunit group with 1 update by @​dependabot[bot] in Testably/aweXpect#895
* chore: Bump coverlet.collector from 6.0.4 to 8.0.0 by @​dependabot[bot] in Testably/aweXpect#897
* chore: update docusaurus webpage by @​vbreuss in Testably/aweXpect#900
* refactor: fix build warnings by @​vbreuss in Testably/aweXpect#902
* feat: give access to `Timeout` and `CancellationToken` in the `ExpectationBuilder` by @​vbreuss in Testably/aweXpect#901
* chore: Bump Microsoft.Testing.Extensions.CodeCoverage from 18.3.2 to 18.5.2 by @​dependabot[bot] in Testably/aweXpect#906
* chore: Bump Microsoft.NET.Test.Sdk from 18.0.1 to 18.3.0 by @​dependabot[bot] in Testably/aweXpect#905
* chore: Bump the nunit group with 2 updates by @​dependabot[bot] in Testably/aweXpect#903
* chore: bump aweXpect.Core to v2.28.0 by @​vbreuss in Testably/aweXpect#909
* refactor: migrate to slnx format by @​vbreuss in Testably/aweXpect#908


**Full Changelog**: Testably/aweXpect@v2.30.0...v2.31.0

## 2.30.0

## What's Changed
* chore: Bump actions/checkout from 5 to 6 by @​dependabot[bot] in Testably/aweXpect#850
* chore: Bump the mstest group with 2 updates by @​dependabot[bot] in Testably/aweXpect#851
* chore: Bump the tunit group with 3 updates by @​dependabot[bot] in Testably/aweXpect#853
* chore: Bump Microsoft.NET.Test.Sdk from 18.0.0 to 18.0.1 by @​dependabot[bot] in Testably/aweXpect#854
* chore: Bump Microsoft.Testing.Extensions.TrxReport from 2.0.1 to 2.0.2 by @​dependabot[bot] in Testably/aweXpect#855
* chore: update docusaurus dependencies by @​vbreuss in Testably/aweXpect#856
* chore: bump nuke to v10.1.0 by @​vbreuss in Testably/aweXpect#862
* chore: Bump BenchmarkDotNet from 0.15.6 to 0.15.8 by @​dependabot[bot] in Testably/aweXpect#860
* chore: Bump PublicApiGenerator from 11.5.0 to 11.5.3 by @​dependabot[bot] in Testably/aweXpect#861
* chore: Bump PublicApiGenerator from 11.5.3 to 11.5.4 by @​dependabot[bot] in Testably/aweXpect#864
* chore: Bump the nunit group with 1 update by @​dependabot[bot] in Testably/aweXpect#863
* chore: Bump the xunit group with 2 updates by @​dependabot[bot] in Testably/aweXpect#858
* chore: Bump actions/download-artifact from 6 to 7 by @​dependabot[bot] in Testably/aweXpect#866
* chore: Bump actions/upload-artifact from 5 to 6 by @​dependabot[bot] in Testably/aweXpect#867
* chore: Bump the tunit group with 2 updates by @​dependabot[bot] in Testably/aweXpect#868
* chore: Bump SharpCompress from 0.41.0 to 0.42.1 by @​dependabot[bot] in Testably/aweXpect#869
* chore: Bump the nunit group with 1 update by @​dependabot[bot] in Testably/aweXpect#876
* chore: Bump Microsoft.Testing.Extensions.CodeCoverage and 2 others by @​dependabot[bot] in Testably/aweXpect#875
* feat: add implicit conversion to `Times` by @​vbreuss in Testably/aweXpect#878
* chore: Bump TUnit and TUnit.Assertions by @​dependabot[bot] in Testably/aweXpect#879
* feat: support async `Because` reason by @​vbreuss in Testably/aweXpect#880
* chore: bump aweXpect.Core to v2.27.0 by @​vbreuss in Testably/aweXpect#881


**Full Changelog**: Testably/aweXpect@v2.29.0...v2.30.0

## 2.29.0

## What's Changed
* chore: update aweXpect to v2.28.0 by @​vbreuss in Testably/aweXpect#841
* refactor: move needs from pack to push by @​vbreuss in Testably/aweXpect#840
* chore: Bump the tunit group with 2 updates by @​dependabot[bot] in Testably/aweXpect#842
* chore: Bump BenchmarkDotNet from 0.15.5 to 0.15.6 by @​dependabot[bot] in Testably/aweXpect#843
* chore: Bump PublicApiGenerator from 11.4.6 to 11.5.0 by @​dependabot[bot] in Testably/aweXpect#844
* chore: Bump SharpCompress from 0.39.0 to 0.41.0 by @​dependabot[bot] in Testably/aweXpect#845
* feat: add support for .NET 10 by @​vbreuss in Testably/aweXpect#794
* fix: disable failing mutation tests by @​vbreuss in Testably/aweXpect#847
* fix: add attributes only when they are available by @​vbreuss in Testably/aweXpect#846
* chore: bump aweXpect.Core to v2.26.0 by @​vbreuss in Testably/aweXpect#848
* fix: build error with MTP mode of dotnet test by @​vbreuss in Testably/aweXpect#849


**Full Changelog**: Testably/aweXpect@v2.28.0...v2.29.0

## 2.28.0

## What's Changed
* chore: update aweXpect to v2.27.1 by @​vbreuss in Testably/aweXpect#818
* docs: document Mockolate by @​vbreuss in Testably/aweXpect#828
* chore: Bump actions/setup-node from 5 to 6 by @​dependabot[bot] in Testably/aweXpect#819
* chore: Bump actions/download-artifact from 5 to 6 by @​dependabot[bot] in Testably/aweXpect#822
* chore: Bump actions/upload-artifact from 4 to 5 by @​dependabot[bot] in Testably/aweXpect#823
* chore: Bump BenchmarkDotNet from 0.14.0 to 0.15.4 by @​dependabot[bot] in Testably/aweXpect#824
* chore: Bump FluentAssertions from 8.2.0 to 8.8.0 by @​dependabot[bot] in Testably/aweXpect#825
* docs: fix docusaurus warning by @​vbreuss in Testably/aweXpect#829
* chore: Bump Microsoft.NET.Test.Sdk from 17.14.1 to 18.0.0 by @​dependabot[bot] in Testably/aweXpect#826
* chore: Bump Microsoft.Testing.Extensions.CodeCoverage from 17.14.2 to 18.1.0 by @​dependabot[bot] in Testably/aweXpect#827
* chore: update TUnit to v0.88.0 by @​vbreuss in Testably/aweXpect#830
* feat: improve test output for dictionary `ContainsKey` by @​vbreuss in Testably/aweXpect#835
* chore: Bump the xunit group with 2 updates by @​dependabot[bot] in Testably/aweXpect#833
* chore: Bump the nunit group with 1 update by @​dependabot[bot] in Testably/aweXpect#831
* chore: Bump BenchmarkDotNet from 0.15.4 to 0.15.5 by @​dependabot[bot] in Testably/aweXpect#834
* fix: infinite loop in result contexts by @​vbreuss in Testably/aweXpect#836
* fix: use list in `ResultContexts` by @​vbreuss in Testably/aweXpect#837
* feat: include actual and expected context in string contains by @​vbreuss in Testably/aweXpect#838
* chore: update aweXpect.Core to v2.25.2 by @​vbreuss in Testably/aweXpect#839


**Full Changelog**: Testably/aweXpect@v2.27.1...v2.28.0

## 2.27.1

## What's Changed
* fix: formatting of nested types within generic types by @​vbreuss in Testably/aweXpect#815
* refactor: reduce allocations for context by @​vbreuss in Testably/aweXpect#816
* chore: bump aweXpect.Core to v2.25.1 by @​vbreuss in Testably/aweXpect#817


**Full Changelog**: Testably/aweXpect@v2.27.0...v2.27.1

## 2.27.0

## What's Changed
* chore: Bump the xunit group with 3 updates by @​dependabot[bot] in Testably/aweXpect#800
* chore: Bump the mstest group with 2 updates by @​dependabot[bot] in Testably/aweXpect#801
* feat: allow customization of the `MaximumStringLength` by @​vbreuss in Testably/aweXpect#802
* chore: update docusaurus to v3.9.1 by @​vbreuss in Testably/aweXpect#803
* fix: formatting of nullable types by @​vbreuss in Testably/aweXpect#808
* chore: Bump the mstest group with 2 updates by @​dependabot[bot] in Testably/aweXpect#805
* chore: Bump the nunit group with 1 update by @​dependabot[bot] in Testably/aweXpect#806
* chore: update TUnit to v0.70.0 by @​vbreuss in Testably/aweXpect#809
* feat: move framework adapters to source generation by @​vbreuss in Testably/aweXpect#810
* coverage: ensure that `NaN` is considered equal to `NaN` by @​vbreuss in Testably/aweXpect#811
* chore: bump the aweXpect group by @​vbreuss in Testably/aweXpect#812
* chore: update aweXpect.Core to v2.25.0 by @​vbreuss in Testably/aweXpect#813
* feat: support MSTest v4 by @​vbreuss in Testably/aweXpect#814


**Full Changelog**: Testably/aweXpect@v2.26.0...v2.27.0

Commits viewable in [compare view](Testably/aweXpect@v2.26.0...v2.31.0).
</details>

Updated [aweXpect.Core](https://github.com/aweXpect/aweXpect) from 2.24.0 to 2.28.0.

<details>
<summary>Release notes</summary>

_Sourced from [aweXpect.Core's releases](https://github.com/aweXpect/aweXpect/releases)._

## 2.28.0

## What's Changed
* chore: update aweXpect to v2.27.1 by @​vbreuss in Testably/aweXpect#818
* docs: document Mockolate by @​vbreuss in Testably/aweXpect#828
* chore: Bump actions/setup-node from 5 to 6 by @​dependabot[bot] in Testably/aweXpect#819
* chore: Bump actions/download-artifact from 5 to 6 by @​dependabot[bot] in Testably/aweXpect#822
* chore: Bump actions/upload-artifact from 4 to 5 by @​dependabot[bot] in Testably/aweXpect#823
* chore: Bump BenchmarkDotNet from 0.14.0 to 0.15.4 by @​dependabot[bot] in Testably/aweXpect#824
* chore: Bump FluentAssertions from 8.2.0 to 8.8.0 by @​dependabot[bot] in Testably/aweXpect#825
* docs: fix docusaurus warning by @​vbreuss in Testably/aweXpect#829
* chore: Bump Microsoft.NET.Test.Sdk from 17.14.1 to 18.0.0 by @​dependabot[bot] in Testably/aweXpect#826
* chore: Bump Microsoft.Testing.Extensions.CodeCoverage from 17.14.2 to 18.1.0 by @​dependabot[bot] in Testably/aweXpect#827
* chore: update TUnit to v0.88.0 by @​vbreuss in Testably/aweXpect#830
* feat: improve test output for dictionary `ContainsKey` by @​vbreuss in Testably/aweXpect#835
* chore: Bump the xunit group with 2 updates by @​dependabot[bot] in Testably/aweXpect#833
* chore: Bump the nunit group with 1 update by @​dependabot[bot] in Testably/aweXpect#831
* chore: Bump BenchmarkDotNet from 0.15.4 to 0.15.5 by @​dependabot[bot] in Testably/aweXpect#834
* fix: infinite loop in result contexts by @​vbreuss in Testably/aweXpect#836
* fix: use list in `ResultContexts` by @​vbreuss in Testably/aweXpect#837
* feat: include actual and expected context in string contains by @​vbreuss in Testably/aweXpect#838
* chore: update aweXpect.Core to v2.25.2 by @​vbreuss in Testably/aweXpect#839


**Full Changelog**: Testably/aweXpect@v2.27.1...v2.28.0

## 2.27.1

## What's Changed
* fix: formatting of nested types within generic types by @​vbreuss in Testably/aweXpect#815
* refactor: reduce allocations for context by @​vbreuss in Testably/aweXpect#816
* chore: bump aweXpect.Core to v2.25.1 by @​vbreuss in Testably/aweXpect#817


**Full Changelog**: Testably/aweXpect@v2.27.0...v2.27.1

## 2.27.0

## What's Changed
* chore: Bump the xunit group with 3 updates by @​dependabot[bot] in Testably/aweXpect#800
* chore: Bump the mstest group with 2 updates by @​dependabot[bot] in Testably/aweXpect#801
* feat: allow customization of the `MaximumStringLength` by @​vbreuss in Testably/aweXpect#802
* chore: update docusaurus to v3.9.1 by @​vbreuss in Testably/aweXpect#803
* fix: formatting of nullable types by @​vbreuss in Testably/aweXpect#808
* chore: Bump the mstest group with 2 updates by @​dependabot[bot] in Testably/aweXpect#805
* chore: Bump the nunit group with 1 update by @​dependabot[bot] in Testably/aweXpect#806
* chore: update TUnit to v0.70.0 by @​vbreuss in Testably/aweXpect#809
* feat: move framework adapters to source generation by @​vbreuss in Testably/aweXpect#810
* coverage: ensure that `NaN` is considered equal to `NaN` by @​vbreuss in Testably/aweXpect#811
* chore: bump the aweXpect group by @​vbreuss in Testably/aweXpect#812
* chore: update aweXpect.Core to v2.25.0 by @​vbreuss in Testably/aweXpect#813
* feat: support MSTest v4 by @​vbreuss in Testably/aweXpect#814


**Full Changelog**: Testably/aweXpect@v2.26.0...v2.27.0

## 2.26.0

## What's Changed
* feat: add string property result by @​vbreuss in Testably/aweXpect#795
* feat: support direct check for boolean is `true` by @​vbreuss in Testably/aweXpect#797
* chore: update aweXpect.Core to v2.24.0 by @​vbreuss in Testably/aweXpect#798


**Full Changelog**: Testably/aweXpect@v2.25.0...v2.26.0

## 2.25.0

## What's Changed
* refactor!: make `IStringMatchType` asynchronous by @​vbreuss in Testably/aweXpect#787
* refactor: make `EquivalencyExpectationBuilder` public by @​vbreuss in Testably/aweXpect#788
* chore: bump aweXpect.Core to v2.22.0 by @​vbreuss in Testably/aweXpect#789
* fix: handle `null` in `It.Is` by @​vbreuss in Testably/aweXpect#790
* fix: correct error message for prefix/suffix of empty strings by @​vbreuss in Testably/aweXpect#791
* chore: bump the aweXpect group by @​vbreuss in Testably/aweXpect#792
* feat: add `WithoutMessage` for delegate assertions by @​vbreuss in Testably/aweXpect#793


**Full Changelog**: Testably/aweXpect@v2.24.0...v2.25.0

Commits viewable in [compare view](Testably/aweXpect@v2.24.0...v2.28.0).
</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request state: released The issue is released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants