public static FakeTestResult FromReal(ITestResult result) { FakeTestResult fakeTestResult = default; fakeTestResult.ResultState.Status = result.ResultState.Status; fakeTestResult.ResultState.Label = result.ResultState.Label; fakeTestResult.ResultState.Site = result.ResultState.Site; fakeTestResult.Name = result.Name; fakeTestResult.FullName = result.FullName; fakeTestResult.Duration = result.Duration; fakeTestResult.StartTime = result.StartTime; fakeTestResult.EndTime = result.EndTime; fakeTestResult.Message = result.Message; fakeTestResult.StackTrace = result.StackTrace; fakeTestResult.TotalCount = result.TotalCount; fakeTestResult.AssertCount = result.AssertCount; fakeTestResult.FailCount = result.FailCount; fakeTestResult.WarningCount = result.WarningCount; fakeTestResult.PassCount = result.PassCount; fakeTestResult.SkipCount = result.SkipCount; fakeTestResult.InconclusiveCount = result.InconclusiveCount; fakeTestResult.Output = result.Output; fakeTestResult.AssertionResults = result.AssertionResults.Select(x => new FakeTestResultAssertionResult { Status = x.Status, Message = x.Message, StackTrace = x.StackTrace, }).ToList(); return(fakeTestResult); }
static int Main(string[] args) { InChildProcess = true; // Terminate this process if the parent exits. Task.Run(() => { try { using (var pipeSense = new AnonymousPipeClientStream(PipeDirection.In, args[1])) { while (pipeSense.ReadByte() >= 0) { ; } } } finally { Environment.Exit(5); } }); using var pipeClient = new AnonymousPipeClientStream(PipeDirection.Out, args[0]); string assemblyPath = args[2]; string typeName = args[3]; string methodName = args[4]; Assembly asm = Assembly.LoadFrom(assemblyPath !); Assert.NotNull(asm); MethodInfo?methodInfo = asm.GetType(typeName)?.GetMethod(methodName); Assert.NotNull(asm); var runner = new NUnitTestAssemblyRunner(new DefaultTestAssemblyBuilder()); runner.Load(asm, new Dictionary <string, object>()); var result = runner.Run(TestListener.NULL, new SpecificTestFilter { TheMethod = methodInfo }); while (result.HasChildren) { result = result.Children.Single(); } // If nothing was tested, don't output the empty success result. if (result == null || result.Test?.Method?.MethodInfo != methodInfo) { return(1); } XmlSerializer xmlserializer = new(typeof(FakeTestResult)); XmlWriterSettings settings = new(); using (XmlWriter writer = XmlWriter.Create(pipeClient, settings)) { xmlserializer.Serialize(writer, FakeTestResult.FromReal(result)); } return(0); }