diff --git a/Directory.Packages.props b/Directory.Packages.props index 872f80991..78591630c 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -47,7 +47,7 @@ - - + + diff --git a/Pipeline/Build.FrameworkTest.cs b/Pipeline/Build.FrameworkTest.cs index 0fb8f80ad..9822ef7ec 100644 --- a/Pipeline/Build.FrameworkTest.cs +++ b/Pipeline/Build.FrameworkTest.cs @@ -15,7 +15,8 @@ partial class Build Project[] FrameworkUnitTestProjects => [ Solution.Tests.Frameworks.aweXpect_Frameworks_Fallback_Tests, - Solution.Tests.Frameworks.aweXpect_Frameworks_MsTest_Tests, + Solution.Tests.Frameworks.aweXpect_Frameworks_MsTest3_Tests, + Solution.Tests.Frameworks.aweXpect_Frameworks_MsTest4_Tests, Solution.Tests.Frameworks.aweXpect_Frameworks_NUnit4_Tests, Solution.Tests.Frameworks.aweXpect_Frameworks_NUnit3_Tests, Solution.Tests.Frameworks.aweXpect_Frameworks_Xunit2_Tests, diff --git a/Source/aweXpect.Frameworks/FrameworkGenerator.cs b/Source/aweXpect.Frameworks/FrameworkGenerator.cs index 6865c2f40..babb2b7a9 100644 --- a/Source/aweXpect.Frameworks/FrameworkGenerator.cs +++ b/Source/aweXpect.Frameworks/FrameworkGenerator.cs @@ -234,25 +234,27 @@ private interface ITestTimeoutException; void IIncrementalGenerator.Initialize(IncrementalGeneratorInitializationContext context) { - IncrementalValueProvider<(bool hasMsTest, bool hasNunit, bool hasTUnit, bool hasXunit2, bool hasXunit3Core, bool + IncrementalValueProvider<(bool hasMsTest3, bool hasMsTest4, bool hasNunit, bool hasTUnit, bool hasXunit2, bool hasXunit3Core, bool hasXunit3Assert)> settings = context.CompilationProvider .Select((c, _) => { - bool hasMsTest = + bool hasMsTest3 = c.ReferencedAssemblyNames.Any(x => x.Name == "Microsoft.VisualStudio.TestPlatform.TestFramework"); + bool hasMsTest4 = + c.ReferencedAssemblyNames.Any(x => x.Name == "MSTest.TestFramework"); bool hasNunit = c.ReferencedAssemblyNames.Any(x => x.Name == "nunit.framework"); bool hasTUnit = c.ReferencedAssemblyNames.Any(x => x.Name == "TUnit.Core") && c.ReferencedAssemblyNames.Any(x => x.Name == "TUnit.Assertions"); bool hasXunit2 = c.ReferencedAssemblyNames.Any(x => x.Name == "xunit.assert"); bool hasXunit3Core = c.ReferencedAssemblyNames.Any(x => x.Name == "xunit.v3.core"); bool hasXunit3Assert = c.ReferencedAssemblyNames.Any(x => x.Name == "xunit.v3.assert"); - return (hasMsTest, hasNunit, hasTUnit, hasXunit2, hasXunit3Core, hasXunit3Assert); + return (hasMsTest3, hasMsTest4, hasNunit, hasTUnit, hasXunit2, hasXunit3Core, hasXunit3Assert); }); // Generate the source from the captured values context.RegisterSourceOutput(settings, static (spc, opts) => { - if (opts.hasMsTest) + if (opts.hasMsTest3 || opts.hasMsTest4) { spc.AddSource("MsTest.g.cs", MsTestAdapter); } diff --git a/Source/aweXpect.Frameworks/Properties/launchSettings.json b/Source/aweXpect.Frameworks/Properties/launchSettings.json index bd75a0398..77c8d568c 100644 --- a/Source/aweXpect.Frameworks/Properties/launchSettings.json +++ b/Source/aweXpect.Frameworks/Properties/launchSettings.json @@ -3,7 +3,7 @@ "profiles": { "Generators": { "commandName": "DebugRoslynComponent", - "targetProject": "../../Tests/Frameworks/aweXpect.Frameworks.TUnit.Tests/aweXpect.Frameworks.TUnit.Tests.csproj" + "targetProject": "../../Tests/Frameworks/aweXpect.Frameworks.MsTest4.Tests/aweXpect.Frameworks.MsTest4.Tests.csproj" } } } diff --git a/Tests/Frameworks/aweXpect.Frameworks.MsTest.Tests/MsTestFrameworkTests.cs b/Tests/Frameworks/aweXpect.Frameworks.MsTest3.Tests/MsTest3FrameworkTests.cs similarity index 95% rename from Tests/Frameworks/aweXpect.Frameworks.MsTest.Tests/MsTestFrameworkTests.cs rename to Tests/Frameworks/aweXpect.Frameworks.MsTest3.Tests/MsTest3FrameworkTests.cs index 34be1ffaf..602cfa95c 100644 --- a/Tests/Frameworks/aweXpect.Frameworks.MsTest.Tests/MsTestFrameworkTests.cs +++ b/Tests/Frameworks/aweXpect.Frameworks.MsTest3.Tests/MsTest3FrameworkTests.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; -namespace aweXpect.Frameworks.MsTest.Tests; +namespace aweXpect.Frameworks.MsTest3.Tests; [TestClass] public sealed class MsTestFrameworkTests diff --git a/Tests/Frameworks/aweXpect.Frameworks.MsTest3.Tests/aweXpect.Frameworks.MsTest3.Tests.csproj b/Tests/Frameworks/aweXpect.Frameworks.MsTest3.Tests/aweXpect.Frameworks.MsTest3.Tests.csproj new file mode 100644 index 000000000..6b225fce0 --- /dev/null +++ b/Tests/Frameworks/aweXpect.Frameworks.MsTest3.Tests/aweXpect.Frameworks.MsTest3.Tests.csproj @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + diff --git a/Tests/Frameworks/aweXpect.Frameworks.MsTest4.Tests/MsTest4FrameworkTests.cs b/Tests/Frameworks/aweXpect.Frameworks.MsTest4.Tests/MsTest4FrameworkTests.cs new file mode 100644 index 000000000..d93ecf96b --- /dev/null +++ b/Tests/Frameworks/aweXpect.Frameworks.MsTest4.Tests/MsTest4FrameworkTests.cs @@ -0,0 +1,38 @@ +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace aweXpect.Frameworks.MsTest4.Tests; + +[TestClass] +public sealed class MsTestFrameworkTests +{ + [TestMethod] + public async Task OnFail_WhenUsingMsTestAsTestFramework_ShouldThrowAssertFailedException() + { + void Act() + => Fail.Test("my message"); + + await Expect.That(Act).Throws() + .WithMessage("my message"); + } + + [TestMethod] + public async Task OnInconclusive_WhenUsingMsTestAsTestFramework_ShouldThrowAssertInconclusiveException() + { + void Act() + => Fail.Inconclusive("my message"); + + await Expect.That(Act).Throws() + .WithMessage("my message"); + } + + [TestMethod] + public async Task OnSkip_WhenUsingMsTestAsTestFramework_ShouldThrowAssertInconclusiveException() + { + void Act() + => Skip.Test("my message"); + + await Expect.That(Act).Throws() + .WithMessage("my message"); + } +} diff --git a/Tests/Frameworks/aweXpect.Frameworks.MsTest.Tests/aweXpect.Frameworks.MsTest.Tests.csproj b/Tests/Frameworks/aweXpect.Frameworks.MsTest4.Tests/aweXpect.Frameworks.MsTest4.Tests.csproj similarity index 100% rename from Tests/Frameworks/aweXpect.Frameworks.MsTest.Tests/aweXpect.Frameworks.MsTest.Tests.csproj rename to Tests/Frameworks/aweXpect.Frameworks.MsTest4.Tests/aweXpect.Frameworks.MsTest4.Tests.csproj diff --git a/aweXpect.sln b/aweXpect.sln index bbe94e9bb..7b1b41891 100644 --- a/aweXpect.sln +++ b/aweXpect.sln @@ -77,7 +77,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "aweXpect.Benchmarks", "Benc EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "aweXpect.Frameworks.Fallback.Tests", "Tests\Frameworks\aweXpect.Frameworks.Fallback.Tests\aweXpect.Frameworks.Fallback.Tests.csproj", "{A672BA16-8BE2-4E4F-A6DD-59911284EDF8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "aweXpect.Frameworks.MsTest.Tests", "Tests\Frameworks\aweXpect.Frameworks.MsTest.Tests\aweXpect.Frameworks.MsTest.Tests.csproj", "{1EC393AD-DE25-4C0E-A8B5-B19A2843A4E2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "aweXpect.Frameworks.MsTest3.Tests", "Tests\Frameworks\aweXpect.Frameworks.MsTest3.Tests\aweXpect.Frameworks.MsTest3.Tests.csproj", "{1EC393AD-DE25-4C0E-A8B5-B19A2843A4E2}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "aweXpect.Frameworks.Xunit3.Tests", "Tests\Frameworks\aweXpect.Frameworks.Xunit3.Tests\aweXpect.Frameworks.Xunit3.Tests.csproj", "{5D0060AC-986B-4C28-A871-BA0EC9223DA7}" EndProject @@ -97,6 +97,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "aweXpect.SourceGenerators", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "aweXpect.Frameworks", "Source\aweXpect.Frameworks\aweXpect.Frameworks.csproj", "{75E57A42-1C09-4923-B1E1-A27937189E9A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "aweXpect.Frameworks.MsTest4.Tests", "Tests\Frameworks\aweXpect.Frameworks.MsTest4.Tests\aweXpect.Frameworks.MsTest4.Tests.csproj", "{14C9979C-21EF-424F-90A5-A7B2D96E297E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -189,6 +191,10 @@ Global {75E57A42-1C09-4923-B1E1-A27937189E9A}.Debug|Any CPU.Build.0 = Debug|Any CPU {75E57A42-1C09-4923-B1E1-A27937189E9A}.Release|Any CPU.ActiveCfg = Release|Any CPU {75E57A42-1C09-4923-B1E1-A27937189E9A}.Release|Any CPU.Build.0 = Release|Any CPU + {14C9979C-21EF-424F-90A5-A7B2D96E297E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14C9979C-21EF-424F-90A5-A7B2D96E297E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14C9979C-21EF-424F-90A5-A7B2D96E297E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14C9979C-21EF-424F-90A5-A7B2D96E297E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {97D64B45-D97E-4A94-9EF0-37BF25310EBA} = {9CC57AD0-4984-4618-96EA-01FFFCCD84FA} @@ -213,5 +219,6 @@ Global {4A940BE9-D9E0-4004-89D4-5D6E8CB37208} = {9CC57AD0-4984-4618-96EA-01FFFCCD84FA} {6C70D2A0-3BB0-4FFC-9422-E0213562176C} = {9CC57AD0-4984-4618-96EA-01FFFCCD84FA} {8FF9344F-E84E-47B8-AB28-575EF15E5C59} = {9CC57AD0-4984-4618-96EA-01FFFCCD84FA} + {14C9979C-21EF-424F-90A5-A7B2D96E297E} = {97A9E15D-5A21-4BA1-940B-7F42933DE0A5} EndGlobalSection EndGlobal