Best Vstest code snippet using Microsoft.VisualStudio.TestPlatform.Client.TestPlatform.TestPlatform
TestRunner.cs
Source:TestRunner.cs  
1using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities;2using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel;3using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;4using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;5using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;6using System;7using System.Collections.Generic;8using System.IO;9using System.Linq;10using System.Net.Sockets;11using System.Runtime.Serialization;12using System.Threading;13using System.Threading.Tasks;14namespace MSTestX.Console15{16    public class TestRunner : IDisposable17    {18        private SocketCommunicationManager socket;19        private System.Net.IPEndPoint _endpoint;20        public TestRunner(System.Net.IPEndPoint endpoint = null)21        {22            _endpoint = endpoint;23        }24        public async Task RunTests(string outputFilename, string settingsXml, CancellationToken cancellationToken)25        {26            var loggerEvents = new TestLoggerEventsImpl();27            var logger = new Microsoft.VisualStudio.TestPlatform.Extensions.TrxLogger.TrxLogger();28            var parameters = new Dictionary<string, string>() { { "TestRunDirectory", "." } };29            if (!string.IsNullOrEmpty(outputFilename))30                parameters.Add("LogFileName", outputFilename);31            logger.Initialize(loggerEvents, parameters);32            try33            {34                await RunTestsInternal(outputFilename, settingsXml, loggerEvents, cancellationToken);35            }36            catch37            {38                if (loggerEvents != null)39                {40                    var result = new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero); //TRXLogger doesn't use these values anyway41                    loggerEvents?.OnTestRunComplete(result);42                }43                throw;44            }45            finally46            {47                socket.StopClient();48            }49        }50        private async Task RunTestsInternal(string outputFilename, string settingsXml, TestLoggerEventsImpl loggerEvents, CancellationToken cancellationToken)51        {52            System.Console.WriteLine("Waiting for connection to test adapter...");53            for (int i = 1; i <= 10; i++)54            {55                socket = new SocketCommunicationManager();56                await socket.SetupClientAsync(_endpoint ?? new System.Net.IPEndPoint(System.Net.IPAddress.Loopback, 38300)).ConfigureAwait(false);57                if (!socket.WaitForServerConnection(10000))58                {59                    if (i == 10)60                    {61                        throw new Exception("No connection to test host could be established. Make sure the app is running in the foreground.");62                    }63                    else64                    {65                        System.Console.WriteLine($"Retrying connection.... ({i} of 10)");66                        continue;67                    }68                }69                break;70            }71            socket.SendMessage(MessageType.SessionConnected); //Start session72            //Perform version handshake73            Message msg = await ReceiveMessageAsync(cancellationToken);74            if (msg?.MessageType == MessageType.VersionCheck)75            {76                var version = JsonDataSerializer.Instance.DeserializePayload<int>(msg);77                var success = version == 1;78                System.Console.WriteLine("Connected to test adapter");79            }80            else81            {82                throw new InvalidOperationException("Handshake failed");83            }84            // Get tests85            socket.SendMessage(MessageType.StartDiscovery,86                new DiscoveryRequestPayload()87                {88                    Sources = new string[] { },89                    RunSettings = settingsXml ?? @"<?xml version=""1.0"" encoding=""utf-8""?><RunSettings><RunConfiguration /></RunSettings>",90                    TestPlatformOptions = null91                });92            int pid = 0;93            while (!cancellationToken.IsCancellationRequested)94            {95                msg = await ReceiveMessageAsync(cancellationToken).ConfigureAwait(false);96                cancellationToken.ThrowIfCancellationRequested();97                if (msg == null)98                {99                    continue;100                }101                if (msg.MessageType == MessageType.TestHostLaunched)102                {103                    var thl = JsonDataSerializer.Instance.DeserializePayload<TestHostLaunchedPayload>(msg);104                    pid = thl.ProcessId;105                    System.Console.WriteLine($"Test Host Launched. Process ID '{pid}'");106                }107                else if (msg.MessageType == MessageType.DiscoveryInitialize)108                {109                    System.Console.Write("Discovering tests...");110                    loggerEvents?.OnDiscoveryStart(new DiscoveryStartEventArgs(new DiscoveryCriteria()));111                }112                else if (msg.MessageType == MessageType.DiscoveryComplete)113                {114                    var dcp = JsonDataSerializer.Instance.DeserializePayload<DiscoveryCompletePayload>(msg);115                    System.Console.WriteLine($"Discovered {dcp.TotalTests} tests");116                    loggerEvents?.OnDiscoveryComplete(new DiscoveryCompleteEventArgs(dcp.TotalTests, false));117                    loggerEvents?.OnDiscoveredTests(new DiscoveredTestsEventArgs(dcp.LastDiscoveredTests));118                    //Start testrun119                    socket.SendMessage(MessageType.TestRunSelectedTestCasesDefaultHost,120                        new TestRunRequestPayload() { TestCases = dcp.LastDiscoveredTests.ToList(), RunSettings = settingsXml });121                    loggerEvents?.OnTestRunStart(new TestRunStartEventArgs(new TestRunCriteria(dcp.LastDiscoveredTests, 1)));122                }123                else if (msg.MessageType == MessageType.DataCollectionTestStart)124                {125                    if (!System.Console.IsOutputRedirected)126                    {127                        var tcs = JsonDataSerializer.Instance.DeserializePayload<TestCaseStartEventArgs>(msg);128                        var testName = tcs.TestCaseName;129                        if (string.IsNullOrEmpty(testName))130                            testName = tcs.TestElement.DisplayName;131                        System.Console.Write($"    {testName}");132                    }133                }134                else if (msg.MessageType == MessageType.DataCollectionTestEnd)135                {136                    //Skip137                }138                else if (msg.MessageType == MessageType.DataCollectionTestEndResult)139                {140                    var tr = JsonDataSerializer.Instance.DeserializePayload<Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection.TestResultEventArgs>(msg);141                    var testName = tr.TestResult.DisplayName;142                    if (string.IsNullOrEmpty(testName))143                        testName = tr.TestElement.DisplayName;144                    var outcome = tr.TestResult.Outcome;145                    var parentExecId = tr.TestResult.Properties.Where(t => t.Id == "ParentExecId").Any() ?146                        tr.TestResult.GetPropertyValue<Guid>(tr.TestResult.Properties.Where(t => t.Id == "ParentExecId").First(), Guid.Empty) : Guid.Empty;147                    if (outcome == Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome.Failed)148                    {149                    }150                    else if (outcome == Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome.Skipped)151                    {152                        System.Console.ForegroundColor = ConsoleColor.Yellow;153                    }154                    else if (outcome == Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome.Passed)155                    {156                        System.Console.ForegroundColor = ConsoleColor.Green;157                    }158                    if (!System.Console.IsOutputRedirected)159                    {160                        System.Console.SetCursorPosition(0, System.Console.CursorTop);161                    }162                    string testMessage = tr.TestResult?.ErrorMessage;163                    if (parentExecId == Guid.Empty || !System.Console.IsOutputRedirected)164                    {165                        switch(outcome)166                        {167                            case Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome.Passed:168                                System.Console.ForegroundColor = ConsoleColor.Green;169                                System.Console.Write("  â ");170                                break;171                            case Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome.Skipped:172                                System.Console.ForegroundColor = ConsoleColor.Yellow;173                                System.Console.Write("  ! ");174                                break;175                            case Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome.Failed:176                                System.Console.ForegroundColor = ConsoleColor.Red;177                                System.Console.Write("  X ");178                                break;179                            default:180                                System.Console.Write("    "); break;181                        }182                        System.Console.ResetColor();183                        System.Console.Write(testName);184                        var d = tr.TestResult.Duration;185                        if (d.TotalMilliseconds < 1)186                            System.Console.WriteLine(" [< 1ms]");187                        else if (d.TotalSeconds < 1)188                            System.Console.WriteLine($" [{d.Milliseconds}ms]");189                        else if (d.TotalMinutes < 1)190                            System.Console.WriteLine($" [{d.Seconds}s {d.Milliseconds.ToString("0")}ms]");191                        else if (d.TotalHours < 1)192                            System.Console.WriteLine($" [{d.Minutes}m {d.Seconds}s {d.Milliseconds.ToString("0")}ms]");193                        else if (d.TotalDays < 1)194                            System.Console.WriteLine($" [{d.Hours}h {d.Minutes}m {d.Seconds}s {d.Milliseconds.ToString("0")}ms]");195                        else196                            System.Console.WriteLine($" [{Math.Floor(d.TotalDays)}d {d.Hours}h {d.Minutes}m {d.Seconds}s {d.Milliseconds.ToString("0")}ms]"); // I sure hope your tests won't ever need this line of code197                        if (!string.IsNullOrEmpty(testMessage))198                        {199                            System.Console.ForegroundColor = ConsoleColor.Red;200                            System.Console.WriteLine("  Error Message:");201                            System.Console.WriteLine("   " + testMessage);202                            if (!string.IsNullOrEmpty(tr.TestResult.ErrorStackTrace))203                            {204                                System.Console.WriteLine("  Stack Trace:");205                                System.Console.WriteLine("   " + tr.TestResult.ErrorStackTrace);206                            }207                            System.Console.ResetColor();208                            System.Console.WriteLine();209                            // If test failed, also output messages, if any210                            if (tr.TestResult.Messages?.Any() == true)211                            {212                                System.Console.WriteLine("  Standard Output Messages:");213                                foreach (var message in tr.TestResult.Messages)214                                {215                                    System.Console.WriteLine(message.Text);216                                }217                                System.Console.WriteLine();218                            }219                        }                        220                    }221                    // Make attachment paths absolute222                    foreach (var set in tr.TestResult.Attachments)223                    {224                        for (int i = 0; i < set.Attachments.Count; i++)225                        {226                            var uri = set.Attachments[i].Uri.OriginalString;227                            if (!set.Attachments[i].Uri.IsAbsoluteUri)228                            {229                                DirectoryInfo d = new DirectoryInfo(".");230                                var newPath = Path.Combine(d.FullName, uri);231                                newPath = newPath.Replace('/', System.IO.Path.DirectorySeparatorChar);232                                set.Attachments[i] = new Microsoft.VisualStudio.TestPlatform.ObjectModel.UriDataAttachment(233                                    new Uri(newPath, UriKind.Relative), set.Attachments[i].Description);234                            }235                        }236                    }237                    loggerEvents?.OnTestResult(new Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging.TestResultEventArgs(tr.TestResult));238                }239                else if (msg.MessageType == MessageType.ExecutionComplete)240                {241                    var trc = JsonDataSerializer.Instance.DeserializePayload<TestRunCompletePayload>(msg);242                    loggerEvents?.OnTestRunComplete(trc.TestRunCompleteArgs);243                    System.Console.WriteLine();244                    System.Console.WriteLine("Test Run Complete");245                    System.Console.WriteLine($"Total tests: {trc.LastRunTests.TestRunStatistics.ExecutedTests} tests");246                    System.Console.ForegroundColor = ConsoleColor.Green;247                    System.Console.WriteLine($"     Passed : {trc.LastRunTests.TestRunStatistics.Stats[Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome.Passed]} ");248                    System.Console.ForegroundColor = ConsoleColor.Red;249                    System.Console.WriteLine($"     Failed : {trc.LastRunTests.TestRunStatistics.Stats[Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome.Failed]} ");250                    System.Console.ForegroundColor = ConsoleColor.Yellow;251                    System.Console.WriteLine($"    Skipped : {trc.LastRunTests.TestRunStatistics.Stats[Microsoft.VisualStudio.TestPlatform.ObjectModel.TestOutcome.Skipped]} ");252                    System.Console.ResetColor(); 253                    System.Console.WriteLine($" Total time: {trc.TestRunCompleteArgs.ElapsedTimeInRunningTests.TotalSeconds} Seconds");254                    return; //Test run is complete -> Exit message loop255                }256                else if (msg.MessageType == MessageType.AbortTestRun)257                {258                    throw new TaskCanceledException("Test Run Aborted!");259                }260                else if (msg.MessageType == MessageType.CancelTestRun)261                {262                    throw new TaskCanceledException("Test Run Cancelled!");263                }264                else if (msg.MessageType == MessageType.TestMessage)265                {266                    var tm = JsonDataSerializer.Instance.DeserializePayload<TestMessagePayload>(msg);267                    System.Console.WriteLine($"{tm.MessageLevel}: {tm.Message}");268                }269                else if (msg.MessageType == "AttachmentSet")270                {271                    var set = JsonDataSerializer.Instance.DeserializePayload<FileAttachmentSet>(msg);272                    foreach(var attachment in set.Attachments)273                    {274                        var path = attachment.Uri.OriginalString;275                        try276                        {277                            var dir = Path.GetDirectoryName(path);278                            if (!Directory.Exists(dir))279                                Directory.CreateDirectory(dir);280                            File.WriteAllBytes(path, attachment.Data);281                        }282                        catch { }283                    }284                }285                else286                {287                    System.Console.WriteLine($"Received: {msg.MessageType} -> {msg.Payload}");288                }289            }290            cancellationToken.ThrowIfCancellationRequested();291        }292        private Task<Message> ReceiveMessageAsync(CancellationToken cancellationToken)293        {294            return Task.Run<Message>(() =>295            {296                Message msg = null;297                // Set read timeout to avoid blocking receive raw message298                while (!cancellationToken.IsCancellationRequested)299                {300                    try301                    {302                        msg = socket.ReceiveMessage();303                        cancellationToken.ThrowIfCancellationRequested();304                        if (msg != null)305                        {306                            return msg;307                        }308                    }309                    catch (EndOfStreamException endofStreamException)310                    {311                        throw new Exception("Test run is aborted.", endofStreamException);312                    }313                    catch (IOException ioException)314                    {315                        var socketException = ioException.InnerException as SocketException;316                        if (socketException != null && socketException.SocketErrorCode == SocketError.TimedOut)317                        {318                            throw new Exception("Test runner connection timed out", ioException);319                        }320                        else321                        {322                            continue;323                        }324                    }325                    catch (System.Exception ex)326                    {327                        System.Console.WriteLine("Failed to receive message : " + ex.Message);328                        continue;329                    }330                }331                return msg;332            });333        }334        public void Dispose()335        {336            socket.StopClient();337        }338        private class TestLoggerEventsImpl : TestLoggerEvents339        {340            public void OnTestRunMessage(TestRunMessageEventArgs e) => TestRunMessage?.Invoke(this, e);341            public override event EventHandler<TestRunMessageEventArgs> TestRunMessage;342            public void OnTestRunStart(TestRunStartEventArgs e) => TestRunStart?.Invoke(this, e);343            public override event EventHandler<TestRunStartEventArgs> TestRunStart;344            public void OnTestResult(Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging.TestResultEventArgs e) => TestResult?.Invoke(this, e);345            public override event EventHandler<Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging.TestResultEventArgs> TestResult;346            public void OnTestRunComplete(TestRunCompleteEventArgs e) => TestRunComplete?.Invoke(this, e);347            public override event EventHandler<TestRunCompleteEventArgs> TestRunComplete;348            public void OnDiscoveryStart(DiscoveryStartEventArgs e) => DiscoveryStart?.Invoke(this, e);349            public override event EventHandler<DiscoveryStartEventArgs> DiscoveryStart;350            public void OnDiscoveryMessage(TestRunMessageEventArgs e) => DiscoveryMessage?.Invoke(this, e);351            public override event EventHandler<TestRunMessageEventArgs> DiscoveryMessage;352            public void OnDiscoveredTests(DiscoveredTestsEventArgs e) => DiscoveredTests?.Invoke(this, e);353            public override event EventHandler<DiscoveredTestsEventArgs> DiscoveredTests;354            public void OnDiscoveryComplete(DiscoveryCompleteEventArgs e) => DiscoveryComplete?.Invoke(this, e);355            public override event EventHandler<DiscoveryCompleteEventArgs> DiscoveryComplete;356        }357        [DataContract]358        private class FileAttachmentSet359        {...Common_Friends.cs
Source:Common_Friends.cs  
1// Copyright (c) Microsoft Corporation. All rights reserved.2// Licensed under the MIT license. See LICENSE file in the project root for full license information.3using System.Runtime.CompilerServices;4#region Product Assemblies5[assembly: InternalsVisibleTo("Microsoft.TestPlatform.CrossPlatEngine, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]6[assembly: InternalsVisibleTo("vstest.console, PublicKey =0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]7[assembly: InternalsVisibleTo("datacollector, PublicKey =0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]8[assembly: InternalsVisibleTo("Microsoft.TestPlatform.CommunicationUtilities, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]9[assembly: InternalsVisibleTo("Microsoft.VisualStudio.TestPlatform.Common, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]10[assembly: InternalsVisibleTo("Microsoft.VisualStudio.TestPlatform.Client, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]11#endregion12#region Test Assemblies13[assembly: InternalsVisibleTo("Microsoft.TestPlatform.Common.UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]14[assembly: InternalsVisibleTo("Microsoft.TestPlatform.CrossPlatEngine.UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]15[assembly: InternalsVisibleTo("vstest.console.UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]16[assembly: InternalsVisibleTo("Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]17[assembly: InternalsVisibleTo("datacollector.UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]18[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]19[assembly: InternalsVisibleTo("Microsoft.TestPlatform.CommunicationUtilities.UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]20[assembly: InternalsVisibleTo("Microsoft.TestPlatform.Client.UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]21[assembly: InternalsVisibleTo("Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1364b210712e440efa6b25a553aca2b8c6ae036e4e32a18f62a50b7e6dd7f50fc0453c0e61a70c7c38d4a87c421eebd369be622de316f952c5cfdc171f1654b7bc4bad438ecdf19080be273dda3e6a7e070f2ca68d830202a3515bd6684d4be8d1b9743734e1796da068b4b60f9651c416584e74952baf87422550c81800bab")]22#endregion...ITranslationLayerRequestSenderAsync.cs
Source:ITranslationLayerRequestSenderAsync.cs  
1// Copyright (c) Microsoft Corporation. All rights reserved.2// Licensed under the MIT license. See LICENSE file in the project root for full license information.3namespace Microsoft.TestPlatform.VsTestConsole.TranslationLayer.Interfaces4{5    using System;6    using System.Collections.Generic;7    using System.Threading.Tasks;8    using Microsoft.VisualStudio.TestPlatform.ObjectModel;9    using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;10    using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces;11    /// <summary>12    /// Asynchronous equivalent of <see cref="ITranslationLayerRequestSender"/>.13    /// </summary>14    internal interface ITranslationLayerRequestSenderAsync : IDisposable15    {16        /// <summary>17        /// Asynchronous equivalent of <see cref="ITranslationLayerRequestSender.InitializeCommunication"/>18        /// and <see cref="ITranslationLayerRequestSender.WaitForRequestHandlerConnection(int)"/>.19        /// </summary>20        Task<int> InitializeCommunicationAsync(int clientConnectionTimeout);21        /// <summary>22        /// See <see cref="ITranslationLayerRequestSender.Close"/>23        /// </summary>24        void Close();25        /// <summary>26        /// See <see cref="ITranslationLayerRequestSender.InitializeExtensions"/>27        /// </summary>28        void InitializeExtensions(IEnumerable<string> pathToAdditionalExtensions);29        /// <summary>30        /// Asynchronous equivalent of ITranslationLayerRequestSender.DiscoverTests/>.31        /// </summary>32        Task DiscoverTestsAsync(IEnumerable<string> sources, string runSettings, TestPlatformOptions options, ITestDiscoveryEventsHandler2 discoveryEventsHandler);33        /// <summary>34        /// Asynchronous equivalent of <see cref="ITranslationLayerRequestSender.StartTestRun(IEnumerable{string}, string, TestPlatformOptions, ITestRunEventsHandler)"/>.35        /// </summary>36        Task StartTestRunAsync(IEnumerable<string> sources, string runSettings, TestPlatformOptions options, ITestRunEventsHandler runEventsHandler);37        /// <summary>38        /// Asynchronous equivalent of <see cref="ITranslationLayerRequestSender.StartTestRun(System.Collections.Generic.IEnumerable{Microsoft.VisualStudio.TestPlatform.ObjectModel.TestCase},string,Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.TestPlatformOptions,Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.ITestRunEventsHandler)"/>.39        /// </summary>40        Task StartTestRunAsync(IEnumerable<TestCase> testCases, string runSettings, TestPlatformOptions options, ITestRunEventsHandler runEventsHandler);41        /// <summary>42        /// Asynchronous equivalent of <see cref="ITranslationLayerRequestSender.StartTestRunWithCustomHost(IEnumerable{string}, string, TestPlatformOptions, ITestRunEventsHandler, ITestHostLauncher)"/>.43        /// </summary>44        Task StartTestRunWithCustomHostAsync(IEnumerable<string> sources, string runSettings, TestPlatformOptions options, ITestRunEventsHandler runEventsHandler, ITestHostLauncher customTestHostLauncher);45        /// <summary>46        /// Asynchronous equivalent of <see cref="ITranslationLayerRequestSender.StartTestRunWithCustomHost(System.Collections.Generic.IEnumerable{Microsoft.VisualStudio.TestPlatform.ObjectModel.TestCase},string,Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.TestPlatformOptions,Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.ITestRunEventsHandler,Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces.ITestHostLauncher)"/>.47        /// </summary>48        Task StartTestRunWithCustomHostAsync(IEnumerable<TestCase> testCases, string runSettings, TestPlatformOptions options, ITestRunEventsHandler runEventsHandler, ITestHostLauncher customTestHostLauncher);49        /// <summary>50        /// See <see cref="ITranslationLayerRequestSender.EndSession"/>.51        /// </summary>52        void EndSession();53        /// <summary>54        /// See <see cref="ITranslationLayerRequestSender.CancelTestRun"/>.55        /// </summary>56        void CancelTestRun();57        /// <summary>58        /// See <see cref="ITranslationLayerRequestSender.AbortTestRun"/>.59        /// </summary>60        void AbortTestRun();61        /// <summary>62        /// See <see cref="ITranslationLayerRequestSender.OnProcessExited"/>....TestPlatform
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using Microsoft.VisualStudio.TestPlatform.Client;7using Microsoft.VisualStudio.TestPlatform.ObjectModel;8using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;9using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;10{11    {12        static void Main(string[] args)13        {14            var testPlatform = new TestPlatform();15            var testRunCriteria = new TestRunCriteria(new List<string>() { "C:\\Users\\user\\Desktop\\testproject\\testproject\\bin\\Debug\\testproject.dll" }, "", TestFramework.Any, new Dictionary<string, string>());16            var testRunEventsHandler = new TestRunEventsHandler();17            testPlatform.RunTestRun(testRunCriteria, testRunEventsHandler);18            Console.ReadLine();19        }20    }21    {22        public void HandleLogMessage(TestMessageLevel level, string message)23        {24            Console.WriteLine("Log: " + message);25        }26        public void HandleRawMessage(string rawMessage)27        {28            Console.WriteLine("Raw: " + rawMessage);29        }30        public void HandleTestRunComplete(TestRunCompleteEventArgs completeArgs, CancellationToken cancellationToken, ITestRunStatisticsAggregator runStatsAggregator)31        {32            Console.WriteLine("Test run complete");33        }34        public void HandleTestRunStatsChange(TestRunChangedEventArgs testRunChangedArgs, CancellationToken cancellationToken, ITestRunStatisticsAggregator runStatsAggregator)35        {36            Console.WriteLine("Test run stats change");37        }38    }39}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!!
