Best Vstest code snippet using TestPlatform.Playground.TestSessionHandler
Program.cs
Source:Program.cs  
...109        {110            CollectMetrics = true,111        };112        var r = new VsTestConsoleWrapper(console, consoleOptions);113        var sessionHandler = new TestSessionHandler();114#pragma warning disable CS0618 // Type or member is obsolete115        //// TestSessions116        // r.StartTestSession(sources, sourceSettings, sessionHandler);117#pragma warning restore CS0618 // Type or member is obsolete118        var discoveryHandler = new PlaygroundTestDiscoveryHandler(detailedOutput);119        var sw = Stopwatch.StartNew();120        // Discovery121        r.DiscoverTests(sources, sourceSettings, options, sessionHandler.TestSessionInfo, discoveryHandler);122        var discoveryDuration = sw.ElapsedMilliseconds;123        Console.WriteLine($"Discovery done in {discoveryDuration} ms");124        sw.Restart();125        // Run with test cases and custom testhost launcher126        r.RunTestsWithCustomTestHost(discoveryHandler.TestCases, sourceSettings, options, sessionHandler.TestSessionInfo, new TestRunHandler(detailedOutput), new DebuggerTestHostLauncher());127        //// Run with test cases and without custom testhost launcher128        //r.RunTests(discoveryHandler.TestCases, sourceSettings, options, sessionHandler.TestSessionInfo, new TestRunHandler(detailedOutput));129        //// Run with sources and custom testhost launcher130        //r.RunTestsWithCustomTestHost(sources, sourceSettings, options, sessionHandler.TestSessionInfo, new TestRunHandler(detailedOutput), new DebuggerTestHostLauncher());131        //// Run with sources132        //r.RunTests(sources, sourceSettings, options, sessionHandler.TestSessionInfo, new TestRunHandler(detailedOutput));133        var rd = sw.ElapsedMilliseconds;134        Console.WriteLine($"Discovery: {discoveryDuration} ms, Run: {rd} ms, Total: {discoveryDuration + rd} ms");135        Console.WriteLine($"Settings:\n{sourceSettings}");136    }137    public class PlaygroundTestDiscoveryHandler : ITestDiscoveryEventsHandler, ITestDiscoveryEventsHandler2138    {139        private int _testCasesCount;140        private readonly bool _detailedOutput;141        public PlaygroundTestDiscoveryHandler(bool detailedOutput)142        {143            _detailedOutput = detailedOutput;144        }145        public List<TestCase> TestCases { get; internal set; } = new List<TestCase>();146        public void HandleDiscoveredTests(IEnumerable<TestCase>? discoveredTestCases)147        {148            if (_detailedOutput)149            {150                Console.WriteLine($"[DISCOVERY.PROGRESS]");151                Console.WriteLine(WriteTests(discoveredTestCases));152            }153            _testCasesCount += discoveredTestCases.Count();154            if (discoveredTestCases != null) { TestCases.AddRange(discoveredTestCases); }155        }156        public void HandleDiscoveryComplete(long totalTests, IEnumerable<TestCase>? lastChunk, bool isAborted)157        {158            Console.WriteLine($"[DISCOVERY.COMPLETE] aborted? {isAborted}, tests count: {totalTests}");159            if (_detailedOutput)160            {161                Console.WriteLine("Last chunk:");162                Console.WriteLine(WriteTests(lastChunk));163            }164            if (lastChunk != null) { TestCases.AddRange(lastChunk); }165        }166        public void HandleDiscoveryComplete(DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable<TestCase>? lastChunk)167        {168            Console.WriteLine($"[DISCOVERY.COMPLETE] aborted? {discoveryCompleteEventArgs.IsAborted}, tests count: {discoveryCompleteEventArgs.TotalCount}, discovered count: {_testCasesCount}");169            if (_detailedOutput)170            {171                Console.WriteLine("Last chunk:");172                Console.WriteLine(WriteTests(lastChunk));173            }174            Console.WriteLine("Fully discovered:");175            Console.WriteLine(WriteSources(discoveryCompleteEventArgs.FullyDiscoveredSources));176            Console.WriteLine("Partially discovered:");177            Console.WriteLine(WriteSources(discoveryCompleteEventArgs.PartiallyDiscoveredSources));178            Console.WriteLine("Skipped discovery:");179            Console.WriteLine(WriteSources(discoveryCompleteEventArgs.SkippedDiscoveredSources));180            Console.WriteLine("Not discovered:");181            Console.WriteLine(WriteSources(discoveryCompleteEventArgs.NotDiscoveredSources));182            if (lastChunk != null) { TestCases.AddRange(lastChunk); }183        }184        public void HandleLogMessage(TestMessageLevel level, string? message)185        {186            Console.WriteLine($"[DISCOVERY.{level.ToString().ToUpper(CultureInfo.InvariantCulture)}] {message}");187        }188        public void HandleRawMessage(string rawMessage)189        {190            Console.WriteLine($"[DISCOVERY.MESSAGE] {rawMessage}");191        }192        private static string WriteTests(IEnumerable<TestCase>? testCases)193            => testCases?.Any() == true194                ? "\t" + string.Join("\n\t", testCases?.Select(r => r.Source + " " + r.DisplayName))195                : "\t<empty>";196        private static string WriteSources(IEnumerable<string>? sources)197            => sources?.Any() == true198                ? "\t" + string.Join("\n\t", sources)199                : "\t<empty>";200    }201    public class TestRunHandler : ITestRunEventsHandler202    {203        private readonly bool _detailedOutput;204        public TestRunHandler(bool detailedOutput)205        {206            _detailedOutput = detailedOutput;207        }208        public void HandleLogMessage(TestMessageLevel level, string? message)209        {210            Console.WriteLine($"[{level.ToString().ToUpper(CultureInfo.InvariantCulture)}]: {message}");211        }212        public void HandleRawMessage(string rawMessage)213        {214            if (_detailedOutput)215            {216                Console.WriteLine($"[RUN.MESSAGE]: {rawMessage}");217            }218        }219        public void HandleTestRunComplete(TestRunCompleteEventArgs testRunCompleteArgs, TestRunChangedEventArgs? lastChunkArgs, ICollection<AttachmentSet>? runContextAttachments, ICollection<string>? executorUris)220        {221            Console.WriteLine($"[RUN.COMPLETE]: err: {testRunCompleteArgs.Error}, lastChunk:");222            if (_detailedOutput)223            {224                Console.WriteLine(WriteTests(lastChunkArgs?.NewTestResults));225            }226        }227        public void HandleTestRunStatsChange(TestRunChangedEventArgs? testRunChangedArgs)228        {229            if (_detailedOutput)230            {231                Console.WriteLine($"[RUN.PROGRESS]");232                Console.WriteLine(WriteTests(testRunChangedArgs?.NewTestResults));233            }234        }235        public int LaunchProcessWithDebuggerAttached(TestProcessStartInfo testProcessStartInfo)236        {237            throw new NotImplementedException();238        }239        private static string WriteTests(IEnumerable<TestResult>? testResults)240            => WriteTests(testResults?.Select(t => t.TestCase));241        private static string WriteTests(IEnumerable<TestCase>? testCases)242            => testCases?.Any() == true243                ? "\t" + string.Join("\n\t", testCases.Select(r => r.DisplayName))244                : "\t<empty>";245    }246    internal class DebuggerTestHostLauncher : ITestHostLauncher2247    {248        public bool IsDebug => true;249        public bool AttachDebuggerToProcess(int pid)250        {251            return true;252        }253        public bool AttachDebuggerToProcess(int pid, CancellationToken cancellationToken)254        {255            return true;256        }257        public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo)258        {259            return 1;260        }261        public int LaunchTestHost(TestProcessStartInfo defaultTestHostStartInfo, CancellationToken cancellationToken)262        {263            return 1;264        }265    }266}267internal class TestSessionHandler : ITestSessionEventsHandler268{269    public TestSessionHandler() { }270    public TestSessionInfo? TestSessionInfo { get; private set; }271    public void HandleLogMessage(TestMessageLevel level, string? message)272    {273    }274    public void HandleRawMessage(string rawMessage)275    {276    }277    public void HandleStartTestSessionComplete(StartTestSessionCompleteEventArgs? eventArgs)278    {279        TestSessionInfo = eventArgs?.TestSessionInfo;280    }281    public void HandleStopTestSessionComplete(StopTestSessionCompleteEventArgs? eventArgs)282    {283    }...TestSessionHandler
Using AI Code Generation
1using TestPlatform.Playground;2{3    {4        public void TestMethod()5        {6        }7    }8}9using TestPlatform.Playground;10{11    {12        public void TestMethod()13        {14        }15    }16}17using TestPlatform.Playground;18{19    {20        public void TestMethod()21        {22        }23    }24}TestSessionHandler
Using AI Code Generation
1using TestPlatform.Playground;2{3    {4        public static void StartSession()5        {6            System.Diagnostics.Debug.WriteLine("StartSession");7        }8        public static void EndSession()9        {10            System.Diagnostics.Debug.WriteLine("EndSession");11        }12    }13}14using TestPlatform.Playground;15{16    {17        public static void StartSession()18        {19            System.Diagnostics.Debug.WriteLine("StartSession");20        }21        public static void EndSession()22        {23            System.Diagnostics.Debug.WriteLine("EndSession");24        }25    }26}27using TestPlatform.Playground;28{29    {30        public static void StartSession()31        {32            System.Diagnostics.Debug.WriteLine("StartSession");33        }34        public static void EndSession()35        {36            System.Diagnostics.Debug.WriteLine("EndSession");37        }38    }39}40using TestPlatform.Playground;41{42    {43        public static void StartSession()44        {45            System.Diagnostics.Debug.WriteLine("StartSession");46        }47        public static void EndSession()48        {49            System.Diagnostics.Debug.WriteLine("EndSession");50        }51    }52}53using TestPlatform.Playground;54{55    {56        public static void StartSession()57        {58            System.Diagnostics.Debug.WriteLine("StartSession");59        }60        public static void EndSession()61        {62            System.Diagnostics.Debug.WriteLine("EndSession");63        }64    }65}66using TestPlatform.Playground;67{68    {69        public static void StartSession()70        {71            System.Diagnostics.Debug.WriteLine("StartSession");72        }73        public static void EndSession()74        {75            System.Diagnostics.Debug.WriteLine("EndSession");76        }TestSessionHandler
Using AI Code Generation
1using TestPlatform.Playground;2{3    {4        public static void StartSession()5        {6        }7    }8}9using TestPlatform.Playground;10{11    {12        public static void EndSession()13        {14        }15    }16}17using TestPlatform.Playground;18{19    {20        public static void StartSession()21        {22        }23    }24}25using TestPlatform.Playground;26{27    {28        public static void EndSession()29        {30        }31    }32}33using TestPlatform.Playground;34{35    {36        public static void StartSession()37        {38        }39    }40}41using TestPlatform.Playground;42{43    {44        public static void StartSession()45        {46        }47    }48}49using TestPlatform.Playground;50{51    {52        public static void EndSession()53        {54        }55    }56}57using TestPlatform.Playground;58{59    {60        public static void StartSession()61        {62        }63    }64}TestSessionHandler
Using AI Code Generation
1using TestPlatform.Playground;2{3    public override void StartSession()4    {5    }6}7using TestPlatform.Playground;8{9    public override void StartSession()10    {11    }12}13using TestPlatform.Playground;14{15    public override void StartSession()16    {17    }18}19using TestPlatform.Playground;20{21    public override void StartSession()22    {23    }24}25using TestPlatform.Playground;26{27    public override void StartSession()28    {29    }30}31using TestPlatform.Playground;32{33    public override void StartSession()34    {35    }36}37using TestPlatform.Playground;38{39    public override void StartSession()40    {41    }42}43using TestPlatform.Playground;44{45    public override void StartSession()46    {47    }48}49using TestPlatform.Playground;50{51    public override void StartSession()Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
