From c0d86144ed833b52c4a0ea2eb73f409e71bd617b Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sun, 19 Mar 2023 12:41:36 +0100 Subject: [PATCH 1/7] Added engine with fix for NUnit 4 --- build.cake | 4 +- nuget.config | 2 +- src/NUnitTestAdapter/AdapterSettings.cs | 3 +- src/NUnitTestAdapter/NUnit.TestAdapter.csproj | 17 +++++-- .../{AssemblyInfo.cs => AssemblyInfoExtra.cs} | 14 +----- .../NUnit.TestAdapter.Tests.csproj | 4 +- .../NUnitEngineTests/NUnitDiscoveryTests.cs | 49 +++++++++++++++++-- 7 files changed, 66 insertions(+), 27 deletions(-) rename src/NUnitTestAdapter/Properties/{AssemblyInfo.cs => AssemblyInfoExtra.cs} (59%) diff --git a/build.cake b/build.cake index 1ca9b84b..8ee08347 100644 --- a/build.cake +++ b/build.cake @@ -13,9 +13,9 @@ var configuration = Argument("configuration", "Release"); ////////////////////////////////////////////////////////////////////// -var version = "4.4.2"; +var version = "4.5.0"; -var modifier = ""; +var modifier = "-alpha.3"; var dbgSuffix = configuration.ToLower() == "debug" ? "-dbg" : ""; diff --git a/nuget.config b/nuget.config index 01dd41bc..8f1bcc0a 100644 --- a/nuget.config +++ b/nuget.config @@ -3,6 +3,6 @@ - + \ No newline at end of file diff --git a/src/NUnitTestAdapter/AdapterSettings.cs b/src/NUnitTestAdapter/AdapterSettings.cs index e0b866cf..65cc94ce 100644 --- a/src/NUnitTestAdapter/AdapterSettings.cs +++ b/src/NUnitTestAdapter/AdapterSettings.cs @@ -712,7 +712,8 @@ public T MapEnum(string setting, T defaultValue) public enum ExplicitModeEnum { Strict, - Relaxed + Relaxed, + None } public enum OutputXmlFolderMode diff --git a/src/NUnitTestAdapter/NUnit.TestAdapter.csproj b/src/NUnitTestAdapter/NUnit.TestAdapter.csproj index 6f14e4d7..1c42cb4f 100644 --- a/src/NUnitTestAdapter/NUnit.TestAdapter.csproj +++ b/src/NUnitTestAdapter/NUnit.TestAdapter.csproj @@ -4,12 +4,21 @@ NUnit3.TestAdapter NUnit.VisualStudio.TestAdapter - + netcoreapp3.1 - net462;netcoreapp3.1 - false + + true https://github.com/nunit/nunit3-vs-adapter true + 4.5.0.0 + 4.5.0.0 + en + NUnit3 Test Adapter for Visual Studio + Copyright © 2011-2021 Charlie Poole, 2014-2023 Terje Sandstrom + A package containing the NUnit3 TestAdapter for Visual Studio 2012 onwards. + The package works with Visual Studio 2012 and newer, dotnet test and VSTest.Console. + NUnit Project + NUnit3TestAdapter @@ -24,7 +33,7 @@ - + diff --git a/src/NUnitTestAdapter/Properties/AssemblyInfo.cs b/src/NUnitTestAdapter/Properties/AssemblyInfoExtra.cs similarity index 59% rename from src/NUnitTestAdapter/Properties/AssemblyInfo.cs rename to src/NUnitTestAdapter/Properties/AssemblyInfoExtra.cs index 528247a1..ba1a2c80 100644 --- a/src/NUnitTestAdapter/Properties/AssemblyInfo.cs +++ b/src/NUnitTestAdapter/Properties/AssemblyInfoExtra.cs @@ -4,24 +4,14 @@ using System; using System.Reflection; -using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -[assembly: AssemblyTitle("NUnit3 Test Adapter for Visual Studio")] -[assembly: AssemblyDescription("A package containing the NUnit3 TestAdapter for Visual Studio 2012 onwards. \n\r\nThe package works with Visual Studio 2012 and newer, dotnet test and VSTest.Console.\r\n")] -[assembly: AssemblyCompany("NUnit Project")] -[assembly: AssemblyProduct("NUnit3TestAdapter")] -[assembly: AssemblyCopyright("Copyright © 2011-2021 Charlie Poole, 2014-2023 Terje Sandstrom")] +// See https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props for which properties are in the csproj and which are not. + [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: CLSCompliant(false)] -[assembly: NeutralResourcesLanguage("en-US")] - [assembly: ComVisible(false)] - [assembly: Guid("c0aad5e4-b486-49bc-b3e8-31e01be6fefe")] -[assembly: AssemblyVersion("4.4.0.0")] -[assembly: AssemblyFileVersion("4.4.0.0")] - [assembly: InternalsVisibleTo("NUnit.VisualStudio.TestAdapter.Tests, PublicKey=002400000480000094000000060200000024000052534131000400000100010029b97dea816272cc4ea44cf3cf666f8150d6dfe1274b6c2e6c4d54259b756888ec08ad6dd3ea0f540b30408b948ae5f39cf0c7b210abdec267b367ce1eccab97d5c6c02ee67090827ffd699544fa2add4849b45a1901eac08495bfee0397fba3946ff3912ce0b9a497818e418a77a0c8db4ca1780e7b6f6dd6911395fcc0faba")] diff --git a/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj b/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj index 3708c5ee..50dd3106 100644 --- a/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj +++ b/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj @@ -4,8 +4,8 @@ true NUnit.VisualStudio.TestAdapter.Tests NUnit.VisualStudio.TestAdapter.Tests - net462;netcoreapp3.1 - + + netcoreapp3.1 true true diff --git a/src/NUnitTestAdapterTests/NUnitEngineTests/NUnitDiscoveryTests.cs b/src/NUnitTestAdapterTests/NUnitEngineTests/NUnitDiscoveryTests.cs index 92eb8b5a..5db9b5fb 100644 --- a/src/NUnitTestAdapterTests/NUnitEngineTests/NUnitDiscoveryTests.cs +++ b/src/NUnitTestAdapterTests/NUnitEngineTests/NUnitDiscoveryTests.cs @@ -1,6 +1,8 @@ using System.Linq; using System.Xml; + using NSubstitute; + using NUnit.Framework; using NUnit.VisualStudio.TestAdapter.NUnitEngine; // ReSharper disable StringLiteralTypo @@ -1007,17 +1009,54 @@ public void ThatDotNetTestWorks() "; - [Test] - public void ThatMixedExplicitTestSourceWorksFor312() + /// + /// See issue 1041 at https://github.com/nunit/nunit3-vs-adapter/issues/1044 + /// + private const string MixedExplicitTestSourceXmlForIssue1041 = + @" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"; + + [TestCase(MixedExplicitTestSourceXmlForIssue1041, 2, 4)] + [TestCase(MixedExplicitTestSourceXmlForNUnit312, 1, 3)] + public void ThatMixedExplicitTestSourceWorks(string xml, int expectedRunnable, int expectedAll) { var sut = new DiscoveryConverter(logger, settings); var ndr = sut.ConvertXml( - new NUnitResults(XmlHelper.CreateXmlNode(MixedExplicitTestSourceXmlForNUnit312))); + new NUnitResults(XmlHelper.CreateXmlNode(xml))); Assert.Multiple(() => { Assert.That(ndr.IsExplicit, Is.False, "Explicit check fails"); - Assert.That(ndr.TestAssembly.RunnableTestCases.Count, Is.EqualTo(1), "Runnable number fails"); - Assert.That(ndr.TestAssembly.AllTestCases.Count, Is.EqualTo(3), "Can't find all testcases"); + Assert.That(ndr.TestAssembly.RunnableTestCases.Count, Is.EqualTo(expectedRunnable), "Runnable number fails"); + Assert.That(ndr.TestAssembly.AllTestCases.Count, Is.EqualTo(expectedAll), "Can't find all testcases"); }); } From 258cb90891f409488bae0575d83e41efbf7111d7 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Mon, 22 May 2023 22:22:24 +0200 Subject: [PATCH 2/7] Updated test projects --- build.cake | 2 +- nuget.config | 2 +- .../NUnit3AdapterExternalTests.csproj | 2 +- src/NUnitTestAdapter/NUnit.TestAdapter.csproj | 4 ++-- src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build.cake b/build.cake index 8ee08347..7688bf42 100644 --- a/build.cake +++ b/build.cake @@ -15,7 +15,7 @@ var configuration = Argument("configuration", "Release"); var version = "4.5.0"; -var modifier = "-alpha.3"; +var modifier = "-alpha.4"; var dbgSuffix = configuration.ToLower() == "debug" ? "-dbg" : ""; diff --git a/nuget.config b/nuget.config index 8f1bcc0a..01dd41bc 100644 --- a/nuget.config +++ b/nuget.config @@ -3,6 +3,6 @@ - + \ No newline at end of file diff --git a/src/NUnit3AdapterExternalTests/NUnit3AdapterExternalTests.csproj b/src/NUnit3AdapterExternalTests/NUnit3AdapterExternalTests.csproj index 26df8db8..2ab906f0 100644 --- a/src/NUnit3AdapterExternalTests/NUnit3AdapterExternalTests.csproj +++ b/src/NUnit3AdapterExternalTests/NUnit3AdapterExternalTests.csproj @@ -3,7 +3,7 @@ NUnit.VisualStudio.TestAdapter.ExternalTests NUnit.VisualStudio.TestAdapter.Tests - net45;netcoreapp3.1 + net462;netcoreapp3.1 diff --git a/src/NUnitTestAdapter/NUnit.TestAdapter.csproj b/src/NUnitTestAdapter/NUnit.TestAdapter.csproj index 1c42cb4f..1877c2e8 100644 --- a/src/NUnitTestAdapter/NUnit.TestAdapter.csproj +++ b/src/NUnitTestAdapter/NUnit.TestAdapter.csproj @@ -4,9 +4,9 @@ NUnit3.TestAdapter NUnit.VisualStudio.TestAdapter - netcoreapp3.1 + - + net462;netcoreapp3.1 true https://github.com/nunit/nunit3-vs-adapter true diff --git a/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj b/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj index 50dd3106..3708c5ee 100644 --- a/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj +++ b/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj @@ -4,8 +4,8 @@ true NUnit.VisualStudio.TestAdapter.Tests NUnit.VisualStudio.TestAdapter.Tests - - netcoreapp3.1 + net462;netcoreapp3.1 + true true From 03a1f14af813c40c6fae2612aa8ddf6eedb9c352 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 27 May 2023 16:53:03 +0200 Subject: [PATCH 3/7] Updating to 4.5.0 --- build.cake | 2 +- src/NUnitTestAdapter/NUnit.TestAdapter.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.cake b/build.cake index 7688bf42..3640b015 100644 --- a/build.cake +++ b/build.cake @@ -15,7 +15,7 @@ var configuration = Argument("configuration", "Release"); var version = "4.5.0"; -var modifier = "-alpha.4"; +var modifier = ""; var dbgSuffix = configuration.ToLower() == "debug" ? "-dbg" : ""; diff --git a/src/NUnitTestAdapter/NUnit.TestAdapter.csproj b/src/NUnitTestAdapter/NUnit.TestAdapter.csproj index 1877c2e8..d0928ace 100644 --- a/src/NUnitTestAdapter/NUnit.TestAdapter.csproj +++ b/src/NUnitTestAdapter/NUnit.TestAdapter.csproj @@ -33,7 +33,7 @@ - + From a24946518999f6362517a4a9bcd4e18148dd0cc1 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 27 May 2023 16:55:11 +0200 Subject: [PATCH 4/7] commented out local nuget feed --- nuget.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nuget.config b/nuget.config index 8f1bcc0a..01dd41bc 100644 --- a/nuget.config +++ b/nuget.config @@ -3,6 +3,6 @@ - + \ No newline at end of file From 7220fcbed2b4a39abeb2c276c9b649a5714dadab Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Sat, 27 May 2023 18:06:19 +0200 Subject: [PATCH 5/7] resetting frameworks for test project --- src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj b/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj index 296f0161..95d09aaa 100644 --- a/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj +++ b/src/NUnitTestAdapterTests/NUnit.TestAdapter.Tests.csproj @@ -4,9 +4,8 @@ true NUnit.VisualStudio.TestAdapter.Tests NUnit.VisualStudio.TestAdapter.Tests - - netcoreapp3.1 - + net462;netcoreapp3.1 + true true latest From a0dbe50a8bdeddeb4ae67d818cd611d1532c5218 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Mon, 29 May 2023 20:51:13 +0200 Subject: [PATCH 6/7] Updateing target frameworks --- src/NUnitTestAdapter/NUnit.TestAdapter.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NUnitTestAdapter/NUnit.TestAdapter.csproj b/src/NUnitTestAdapter/NUnit.TestAdapter.csproj index c4679ee0..d0928ace 100644 --- a/src/NUnitTestAdapter/NUnit.TestAdapter.csproj +++ b/src/NUnitTestAdapter/NUnit.TestAdapter.csproj @@ -4,7 +4,7 @@ NUnit3.TestAdapter NUnit.VisualStudio.TestAdapter - netcoreapp3.1 + net462;netcoreapp3.1 true From b5d94f7f9de5549c0094a0fc1bcbc03c07d16cc1 Mon Sep 17 00:00:00 2001 From: Terje Sandstrom Date: Tue, 30 May 2023 18:32:12 +0200 Subject: [PATCH 7/7] Fix for issue #1097 --- src/NUnitTestAdapter/AdapterSettings.cs | 107 +------------------- src/NUnitTestAdapter/IAdapterSettings.cs | 118 +++++++++++++++++++++++ src/NUnitTestAdapter/NUnitTestAdapter.cs | 2 +- 3 files changed, 122 insertions(+), 105 deletions(-) create mode 100644 src/NUnitTestAdapter/IAdapterSettings.cs diff --git a/src/NUnitTestAdapter/AdapterSettings.cs b/src/NUnitTestAdapter/AdapterSettings.cs index 65cc94ce..188d674d 100644 --- a/src/NUnitTestAdapter/AdapterSettings.cs +++ b/src/NUnitTestAdapter/AdapterSettings.cs @@ -33,110 +33,6 @@ namespace NUnit.VisualStudio.TestAdapter { - public interface IAdapterSettings - { - int MaxCpuCount { get; } - string ResultsDirectory { get; } - string TargetPlatform { get; } - string TargetFrameworkVersion { get; } - string TestAdapterPaths { get; } - bool CollectSourceInformation { get; } - IDictionary TestProperties { get; } - InternalTraceLevel InternalTraceLevelEnum { get; } - string WorkDirectory { get; } - string Where { get; } - int DefaultTimeout { get; } - int NumberOfTestWorkers { get; } - bool ShadowCopyFiles { get; } - int Verbosity { get; } - bool UseVsKeepEngineRunning { get; } - string BasePath { get; } - string PrivateBinPath { get; } - int? RandomSeed { get; } - bool RandomSeedSpecified { get; } - bool InProcDataCollectorsAvailable { get; } - // ReSharper disable once UnusedMemberInSuper.Global - bool CollectDataForEachTestSeparately { get; } // Used implicitly by MS - bool SynchronousEvents { get; } - string DomainUsage { get; } - bool DumpXmlTestDiscovery { get; } - bool DumpXmlTestResults { get; } - - bool DumpVsInput { get; } - - bool PreFilter { get; } - - /// - /// Syntax documentation . - /// - string DefaultTestNamePattern { get; } - - VsTestCategoryType VsTestCategoryType { get; } - string TestOutputXml { get; } - bool UseTestOutputXml { get; } - OutputXmlFolderMode OutputXmlFolderMode { get; } - - /// - /// For retry runs create a new file for each run. - /// - bool NewOutputXmlFileForEachRun { get; } - - /// - /// True if test run is triggered in an IDE/Editor context. - /// - bool DesignMode { get; } - - /// - /// If true, an adapter shouldn't create appdomains to run tests. - /// - bool DisableAppDomain { get; } - - /// - /// If true, an adapter should disable any test case parallelization. - /// - bool DisableParallelization { get; } - - bool ShowInternalProperties { get; } - - bool UseParentFQNForParametrizedTests { get; } - - bool UseNUnitIdforTestCaseId { get; } - - int ConsoleOut { get; } - bool StopOnError { get; } - TestOutcome MapWarningTo { get; } - bool UseTestNameInConsoleOutput { get; } - DisplayNameOptions DisplayName { get; } - char FullnameSeparator { get; } - DiscoveryMethod DiscoveryMethod { get; } - bool SkipNonTestAssemblies { get; } - - int AssemblySelectLimit { get; } - - bool UseNUnitFilter { get; } - bool IncludeStackTraceForSuites { get; } - - - void Load(IDiscoveryContext context, TestLogger testLogger = null); - void Load(string settingsXml); - void SaveRandomSeed(string dirname); - void RestoreRandomSeed(string dirname); - - bool EnsureAttachmentFileScheme { get; } - - // For Internal Development use - bool FreakMode { get; } // displays metadata instead of real data in Test Explorer - bool Debug { get; } - bool DebugExecution { get; } - bool DebugDiscovery { get; } - - // Filter control - ExplicitModeEnum ExplicitMode { get; } - bool SkipExecutionWhenNoTests { get; } - string TestOutputFolder { get; } - string SetTestOutputFolder(string workDirectory); - } - public enum VsTestCategoryType { NUnit, @@ -197,6 +93,8 @@ public AdapterSettings(ITestLogger logger) /// public bool DisableParallelization { get; private set; } + public bool AllowParallelWithDebugger { get; private set; } + /// /// True if test run is triggered in an IDE/Editor context. /// @@ -524,6 +422,7 @@ private void ExtractRunConfiguration(XmlDocument doc) CollectSourceInformation = GetInnerTextAsBool(runConfiguration, nameof(CollectSourceInformation), true); DisableAppDomain = GetInnerTextAsBool(runConfiguration, nameof(DisableAppDomain), false); DisableParallelization = GetInnerTextAsBool(runConfiguration, nameof(DisableParallelization), false); + AllowParallelWithDebugger = GetInnerTextAsBool(runConfiguration, nameof(AllowParallelWithDebugger), false); DesignMode = GetInnerTextAsBool(runConfiguration, nameof(DesignMode), false); CollectDataForEachTestSeparately = GetInnerTextAsBool(runConfiguration, nameof(CollectDataForEachTestSeparately), false); diff --git a/src/NUnitTestAdapter/IAdapterSettings.cs b/src/NUnitTestAdapter/IAdapterSettings.cs new file mode 100644 index 00000000..8d8b116e --- /dev/null +++ b/src/NUnitTestAdapter/IAdapterSettings.cs @@ -0,0 +1,118 @@ +using System.Collections.Generic; + +using Microsoft.VisualStudio.TestPlatform.ObjectModel; +using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter; + +using NUnit.Engine; + +namespace NUnit.VisualStudio.TestAdapter; + +public interface IAdapterSettings +{ + int MaxCpuCount { get; } + string ResultsDirectory { get; } + string TargetPlatform { get; } + string TargetFrameworkVersion { get; } + string TestAdapterPaths { get; } + bool CollectSourceInformation { get; } + IDictionary TestProperties { get; } + InternalTraceLevel InternalTraceLevelEnum { get; } + string WorkDirectory { get; } + string Where { get; } + int DefaultTimeout { get; } + int NumberOfTestWorkers { get; } + bool ShadowCopyFiles { get; } + int Verbosity { get; } + bool UseVsKeepEngineRunning { get; } + string BasePath { get; } + string PrivateBinPath { get; } + int? RandomSeed { get; } + bool RandomSeedSpecified { get; } + bool InProcDataCollectorsAvailable { get; } + // ReSharper disable once UnusedMemberInSuper.Global + bool CollectDataForEachTestSeparately { get; } // Used implicitly by MS + bool SynchronousEvents { get; } + string DomainUsage { get; } + bool DumpXmlTestDiscovery { get; } + bool DumpXmlTestResults { get; } + + bool DumpVsInput { get; } + + bool PreFilter { get; } + + /// + /// Syntax documentation . + /// + string DefaultTestNamePattern { get; } + + VsTestCategoryType VsTestCategoryType { get; } + string TestOutputXml { get; } + bool UseTestOutputXml { get; } + OutputXmlFolderMode OutputXmlFolderMode { get; } + + /// + /// For retry runs create a new file for each run. + /// + bool NewOutputXmlFileForEachRun { get; } + + /// + /// True if test run is triggered in an IDE/Editor context. + /// + bool DesignMode { get; } + + /// + /// If true, an adapter shouldn't create appdomains to run tests. + /// + bool DisableAppDomain { get; } + + /// + /// If true, an adapter should disable any test case parallelization. + /// + bool DisableParallelization { get; } + + /// + /// Default is that when the adapter notice it is running with a debugger attached it will disable parallelization. + /// By changing this setting to `true` the adapter will allow parallelization even if a debugger is attached. + /// + bool AllowParallelWithDebugger { get; } + + bool ShowInternalProperties { get; } + + bool UseParentFQNForParametrizedTests { get; } + + bool UseNUnitIdforTestCaseId { get; } + + int ConsoleOut { get; } + bool StopOnError { get; } + TestOutcome MapWarningTo { get; } + bool UseTestNameInConsoleOutput { get; } + DisplayNameOptions DisplayName { get; } + char FullnameSeparator { get; } + DiscoveryMethod DiscoveryMethod { get; } + bool SkipNonTestAssemblies { get; } + + int AssemblySelectLimit { get; } + + bool UseNUnitFilter { get; } + bool IncludeStackTraceForSuites { get; } + + + void Load(IDiscoveryContext context, TestLogger testLogger = null); + void Load(string settingsXml); + void SaveRandomSeed(string dirname); + void RestoreRandomSeed(string dirname); + + bool EnsureAttachmentFileScheme { get; } + + // For Internal Development use + bool FreakMode { get; } // displays metadata instead of real data in Test Explorer + bool Debug { get; } + bool DebugExecution { get; } + bool DebugDiscovery { get; } + + // Filter control + ExplicitModeEnum ExplicitMode { get; } + bool SkipExecutionWhenNoTests { get; } + string TestOutputFolder { get; } + string SetTestOutputFolder(string workDirectory); +} \ No newline at end of file diff --git a/src/NUnitTestAdapter/NUnitTestAdapter.cs b/src/NUnitTestAdapter/NUnitTestAdapter.cs index ccea2855..4446d108 100644 --- a/src/NUnitTestAdapter/NUnitTestAdapter.cs +++ b/src/NUnitTestAdapter/NUnitTestAdapter.cs @@ -198,7 +198,7 @@ protected TestPackage CreateTestPackage(string assemblyName, IGrouping